早教吧作业答案频道 -->其他-->
编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算.(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;
}
看了 编写一个完整的程序,实现顺序...的网友还看了以下:
要求:符号说明,模型一个新建的有10000平方米的商业中心在招商,该中心希望将其营业面积分别租给食品 2020-03-31 …
把一个长10CM,高6CM,宽5CM的长方体垂直于3个一样的长方体,表面积比原来增加多少平方厘米?给 2020-03-31 …
一个水池,底部按有一个常开的排水管,上部装有若干个一样的进水管,当打开4个排水管时需要5个小时才能 2020-05-13 …
高中英语倒装1Somuchhethaticouldhardlyrecognizehim他变化如此大 2020-05-14 …
英语翻译1.他骑车花了两个小时才到达那个新建的博物馆.(take)2.这个女对她的新娃娃如此着迷, 2020-05-14 …
小升初数学题,大家帮忙解答一下,谢谢1、一个水池,底部有一根常开的排水管,上部装有若干个一样的进水 2020-05-17 …
给三个孩子发水果,一共12个一样的苹果,每个孩子至少有一个苹果,问有____种分法. 2020-05-17 …
面包房有一种面包4个一袋和6个一袋两种不同的包装.杨老师要买50个,买了9袋,她买4个一袋6个一袋 2020-05-17 …
建设和弘扬统一的企业文化,是深化“两个转变”,建设“两个一流”的必然要求,是实现企业与员工共同发 2020-05-29 …
邮件合并主文档必须是一个新建的文档。() 2020-05-31 …