早教吧作业答案频道 -->其他-->
编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.(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;
}
看了 编写一个完整的程序,实现顺序...的网友还看了以下:
计算机病毒()。A.影响程序运行,但不会破坏文件B.影响程序运行,可能破坏文件C.不影响程序运行, 2020-05-26 …
卫星绕地球运行时的运动可看做是绕地心的匀速圆周运动,即相等时间内通过圆弧长度相等的运动,卫星绕地球 2020-06-13 …
圆周运动中,为什么半径乘角度等于弧长?在圆周运动中,为什么物体转过的角度乘以圆的半径等于物体经过的 2020-06-14 …
一个vb获得焦点的问题下列选项中,不能使控件获得焦点的操作是。A.在程序运行期间,用鼠标单击对象B 2020-06-25 …
滑块由滑板的一端运动到另一端的过程中,若滑块和滑板同向运动,位移之差等于板长;反向运动时,位移之和 2020-06-28 …
每天早晚运动后都该吃些什么补充营养?要分是长时间的运动,比如说长跑等,还是短时间的运动,如篮球等1 2020-07-16 …
输入x,按如图所示程序进行运算:规定:程序运行到“判断大于313”记为一次运算.若输入x后程序运算 2020-07-19 …
下面的程序是求如下表达式的值。S=sqrt(ln(1)+ln(2)+ln(3)+......+ln 2020-07-23 …
求信息作业答案。1.一般地,程序编写完成以后,首先要试运行,以便发现错误和修改错误,这种边运行边修改 2020-11-23 …
若某程序框图如图所示,则该程序运行后输出的B等于()A.7B.15C.31D.63 2021-01-15 …