typedef int DataType;
typedef struct
{
DataType data[MaxSize];
int length;
} SeqList;
void InitList(SeqList *L)
{
L->length=0;
}
int Empty(SeqList *L)
{
if(L->length==0)
return 1;
else
return 0;
}
void PrintList(SeqList *L)
{
int i;
for(i=0;ilength;i++)
printf("%d ",L->data[i]);
printf("\n");
}
int Locate(SeqList *L,DataType x)
{
int i;
for(i=0;ilength;i++)
if(L->data[i]==x)
return i+1;
return 0;
}
int CreatList(SeqList *L,int n,DataType a[])
{
if (n>MaxSize)
{
printf("顺序表的空间不够,无法建立顺序表\n");
return 0;
}
for(int i=0;i<n;i++)
L->data[i]=a[i];
L->length=n;
return 1;
}
int Delete(SeqList *L,int i,DataType *ptr)
{
if(L->length==0)
{
printf("下溢错误,删除失败\n");
return 0;
}
if(i<1||i>L->length)
{
printf("位置错误,删除失败\n");
return 0;
}
*ptr=L->data[i-1];
for(int j=i;jlength;j++)
L->data[j-1]=L->data[j];
L->length--;
return 1;
}
void Creat(SeqList &L)
{
int a;
printf("请输入要创建元素的个数:\t");
scanf("%d",&a);
for(int i=0;i<a;i++)
{
printf("请输入第%d个元素\t",i+1);
scanf("%d",&L.data[i]);
L.length++;
}
}
int Insert(SeqList *L,int i,DataType x)
{
if(L->length>=MaxSize)
{
printf("上溢错误,插入失败\n");return 0;
}
if(i<1||i>L->length+1)
{
printf("位置错误,插入失败\n");
return 0;
}
for(int j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];
L->data[i-1]=x;
L->length++;
return 1;
}
int Get(SeqList *L,int i,DataType *ptr)
{
if(i<1||i>L->length)
{
printf("查找位置非法,查找失败\n");
return 0;
}
else
{
*ptr=L->data[i-1];
return 1;
}
}
int length(SeqList *L)
{
return L->length;
}
int main()
{
SeqList L;
int a[8]={12,32,43,55,34,76,81,59},i,x;
CreatList(&L,a,8);
printf("当前线性表的数据为:");
PrintList(&L);
printf("\n");
Insert(&L,2,8);
printf("执行插入操作后数据为:");
PrintList(&L);
printf("\n");
printf("当前线性表的长度为:%d\n",length(&L));
printf("\n");
printf("请输入查找的元素值:");
scanf("%d",&x);
i=Locate(&L,x);
if(0==i)
printf("查找失败\n");
else
printf("元素%d的位置为:%d\n",x,i);
printf("请输入查找第几个元素值:",&i);
scanf("%d",&i);
if(Get(&L,i,&x)==1)
printf("第%d个元素值是%d\n",i,x);
else
printf("线性表中没有第%d个元素\n",i);printf("\n");
printf("请输入要删除第几个元素:");
scanf("%d",&i);
if(Delete(&L,i,&x)==1)
{
printf("删除第%d个元素是%d,删除后的数据为:",i,x);
PrintList(&L);
}
else printf("删除操作失败\n");
return 0;
}
没什么问题,就是主函数里创建顺序表函数调用错误:CreatList(&L,8,a); //CreatList(&L,a,8);