注册 登录
编程论坛 数据结构与算法

线性表----插入的时候为什么得不到预期的结果啊?-有点瑕疵

梁朝斌 发布于 2012-12-11 00:00, 265 次点击
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define maxsize 100
#define ok 1
#define error 0
int yes=0;
typedef struct
{
    int elem[maxsize];
    int length;
}seqlist;
void initlist(seqlist *l)
{
    l->length=0;
}
int  createlist(seqlist *l)
{
    int i,n;
    if(l->length>0)
    {
        printf("线性表已经存在,不需要再创建!\n");
        return error;
    }
    printf("请输入顺序表的长度:\n");
    scanf("%d",&n);
    printf("请输入顺序表的元素:\n");
    for(i=0;i<n;i++)
    scanf("%d",&(l->elem[i]));
    l->length=n;
    yes=1;
    return ok;

}
int inslist(seqlist *l,int i,int e)
{
    int k;
    if(l->length>maxsize)
    {
        printf("空间不足,请补充空间!\n");
        return error;
    }
    printf("请输入插入元素的位置:\n");
    scanf("%d",&i);
    printf("请输入插入的元素值:\n");
    scanf("%d",&e);
    for(k=l->length-1;k>=i-1;i--)
        l->elem[k+1]=l->elem[k];
    l->elem[i-1]=e;
    l->length++;
    printf("插入成功!\n");

    if(l->length==0)
        printf("此时线性表为空!\n");
    else
    {
        printf("此时的线性表是:\n");
        for(i=0;i<l->length;i++)
            printf("%d",l->elem[i]);
        printf("\n");
    }

    return ok;
}
int dellist(seqlist *l,int i)
{
    int k;
    printf("请输入删除元素的位置:\n");
    scanf("%d",&i);
    for(k=i-1;k<l->length;k++)
        l->elem[k]=l->elem[k+1];
    l->length--;
    printf("删除成功!");

    if(l->length==0)
        printf("此时线性表为空!\n");
    else
    {
        printf("此时的线性表是:\n");
        for(i=0;i<l->length;i++)
            printf("%d",l->elem[i]);
        printf("\n");
    }

    return ok;
}
int main(void)
{
    seqlist l;
    int i,e;
    createlist(&l);
    inslist(&l,i,e);
    dellist(&l,i);
    return 0;
}


1 回复
#2
凌云飞翔2012-12-11 00:14
for(k=l->length-1;k>=i-1;i--)改为for(k=l->length-1;k>=i-1;k--)
1