早教吧作业答案频道 -->其他-->
编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.(1)建立一个顺序表,含有n个数据元素.(2)输出顺序表及顺序表的长度.(3)在顺序表给定的位置i,插入一个值为x
题目详情
编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.
(1) 建立一个顺序表,含有n个数据元素.
(2) 输出顺序表及顺序表的长度.
(3) 在顺序表给定的位置i,插入一个值为x的结点.
(4) 在顺序表中删除值为x的结点或者删除给定位置i的结点.
(5) 将顺序表逆置,将结果保存到另外的顺序表中.
(6) 将顺序表按升序排序.
(7) 将两个顺序有序表A和B合并为一个有序表C.
(8) 在主函数中设计一个简单的菜单,分别测试上述算法.
(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;
}
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;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;
}
看了 编写一个完整的程序,实现顺序...的网友还看了以下:
已知y等于y1加y2,y1与x的平方成正比例,y2与x减2成正比例,当x等于1时,y等于5,当x等 2020-06-03 …
初一下册一道解方程应用题在等式y等于ax平方加bx加c中,当x等于1时,y等于负2;当x等于负1时 2020-06-04 …
公式P=800-40XTR=PX=(800-40X)X=800x-40xx所以当X等于1时,TR等 2020-07-09 …
.设f(x)在x.处可导,则lim△x→0△x分之f(x.-△x)-f(x.)等于?2.曲线y=3 2020-07-16 …
若-1小于等于x等于2,化简(x-2的绝对值)+(x+2的绝对值)-1小于等于x只等于2 2020-07-16 …
已知关于x的2次多项式a(x立方-x平方+3x)+b(2x平方+x)+x立方-5当x等于2时值为1 2020-07-27 …
关于根号开出来是正是负比如根号下2减去x等于x最后算出x等于-2和x等于1那么-2是否是增根呢? 2020-07-31 …
在13点5分以前分越高,2分之1减7等于6分之9x减2,6分之2x减1等于8分之5x加1,7分之1( 2020-12-17 …
第一题:3x、2、8、x等于2第二题:24、4、15x、x等于0.4第三题:1又五分之三、五分之二x 2020-12-24 …
画出函数Y等于2X减3的图像,利用图像回答问题1当X等于2是,Y的值1当X等于2是,Y的值,2求图像 2021-01-08 …