早教吧 育儿知识 作业答案 考试题库 百科 知识分享

编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.(1)建立一个顺序表,含有n个数据元素.(2)输出顺序表及顺序表的长度.(3)在顺序表给定的位置i,插入一个值为x

题目详情
编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.
(1) 建立一个顺序表,含有n个数据元素.
(2) 输出顺序表及顺序表的长度.
(3) 在顺序表给定的位置i,插入一个值为x的结点.
(4) 在顺序表中删除值为x的结点或者删除给定位置i的结点.
(5) 将顺序表逆置,将结果保存到另外的顺序表中.
(6) 将顺序表按升序排序.
(7) 将两个顺序有序表A和B合并为一个有序表C.
(8) 在主函数中设计一个简单的菜单,分别测试上述算法.
▼优质解答
答案和解析
*elem;
int length;
int listsize;
} Sqlist;
status Create_sq(Sqlist *L,int n)
{
int i;
L->elem=(int*)malloc(100*sizeof(int));
if(!L->elem) return 0;
for(i=0;iscanf("%d",&(L->elem[i]));
L->length=n;
L->listsize=100;
return 1;
}
status Listinsert_sq(Sqlist *L,int i,int e)
{
int *q,*p,*newbase;
if(i<1||i>L->length+1) return 0;
if(L->length>=L->listsize)
{
newbase=(int*)realloc(L->elem,(L->listsize+10)*sizeof(int));
if(!newbase) exit(-2);
L->elem=newbase;
L->listsize+=10;
}
q=&(L->elem[i-1]);
for(p=&(L->elem[L->length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L->length;
return 1;
}
int main()
{
Sqlist L1;
int n,a;
int i,e;
printf("\n please input the number of data:\n");
scanf("%d",&n);
if(Create_sq(&L1,n)==1)
{
scanf("%d%d",&i,&e);
a=Listinsert_sq(&L1,i,e);
if(a==1)
printf("insert success\n");
else printf("insert false\n");
printf("the list elements are:\n");
for(i=1;i<=L1.length;i++)
{
printf("%d\t",L1.elem[i-1]);
}
}
return 0;
}