代码修改如下,修改部分已标注,如有帮助,请帮忙采纳一下,谢谢。
#include <stdio.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{
ElemType data[MaxSize];
int length;
}SeqList;
void ListInit(SeqList* L)
{
L->length = 0;
}
int ListLength(SeqList* L)
{
return L->length;
}
int ListInsert(SeqList* L,int i,ElemType x)
{
int j;
if(L->length == MaxSize)
{
printf("顺序表已满无法插入!");
return 0;
}else if (i<1 || i>L->length+1)
{
printf("插入位序不合法!\n");
return 0;
}else
{
//i--; //修改1
for(j=L->length;j>i;j--)
L->data[j] = L->data[j-1];
L->data[i-1] = x; //修改2 i-1
L->length++;
return 1;
}
}
int ListDelete(SeqList* L,int i,ElemType *x)
{
int j;
if(L->length == 0)
{
printf("顺序表已空无数据元素可删!\n");
return 0;
}else if (i<1 || i>L->length)
{
printf("删除位序不合法!\n");
return 0;
}else
{
i--;
*x = L->data[i];
for (j=i;j<L->length;j++)
L->data[j] = L->data[j+1]; //修改3
L->length--;
return 1;
}
}
int ListGet(SeqList* L,int i,ElemType* x)
{
if (i<1 || i > L->length)
{
printf("获取位置不合法\n");
return 0;
}else
{
*x = L->data[i-1]; //修改4
return 1;
}
}
void main()
{
SeqList myList;
int i,x;
ListInit(&myList);
for(i=1;i<=10;i++)
ListInsert(&myList,i,i);
ListDelete(&myList,4,&x);
//修改5
for(i=1;i<=9;i++)
{
ListGet(&myList,i,&x);
printf("%d ",x);
}
return ;
}