#include
#include
#define OVERFLOW 0
#define MAXSIZE 100
typedef int ElemType;
typedef struct list{
ElemType elem[MAXSIZE];
int length;
}Sqlist;
void Creatlist(Sqlist &L)
{
int i;
printf("请输入顺序表的长度:");
scanf("%d",&L.length);
for(i=0;i
scanf("%d",&L.elem[i]);
}
void printlist(Sqlist &L)
{
int i;
for(i=0;i
printf("%d ",L.elem[i]);
printf("\n");
}
void Searchlist(Sqlist &L,int x)
{
int i,k=-1;
for(i=0;i
if(L.elem[i]==x)
{
k=i+1;
printf("%d ",k);
}
if(k==-1)
printf("error!");
printf("\n");
}
void Inseri(Sqlist &L,int i,int x)
{
int j;
for(j=L.length;j>=i;j--)
L.elem[j]=L.elem[j-1];
L.elem[j]=x;
L.length++;
}
void Delete(Sqlist &L,int i)
{
int j;
for(j=i;j
L.elem[j-1]=L.elem[j];
L.length--;
}
void Merger(Sqlist &p,Sqlist &r,Sqlist &c)
{
ElemType *a,*b,i=0,j=0,k=0;
a=&p.elem[0];
b=&r.elem[0];
c.length=p.length+r.length;
while(i
{
if(*a>=*b)
{
c.elem[k]=*b;b++;k++;j++;
}
else{
c.elem[k]=*a;a++;k++;i++;
}
}
if(j==r.length)
for(;k
{c.elem[k]=*a;a++;}
else if(i==p.length)
for(;k
{c.elem[k]=*b;b++;}
}
void main()
{
Sqlist L,M,N;
int x,i,n;
printf("1.建立\n");
printf("2.遍历\n");
printf("3.查找\n");
printf("4.插入\n");
printf("5.删除\n");
printf("6.合并\n");
printf("7.退出\n");
while(1)
{
printf("请选择菜单:");
scanf("%d",&n);
switch(n){
case 1:Creatlist(L);break;
case 2:printlist(L);break;
case 3:printf("请输入要查找的元素:");
scanf("%d",&x);
Searchlist(L,x);break;
case 4:printf("请输入要插入的位置:");
scanf("%d",&i);
if(iL.length+1){
printf("error!\n");break;}
printf("请输入要插入的元素:");
scanf("%d",&x);
Inseri(L,i,x);
printlist(L);break;
case 5:printf("请输入要删去的元素的位置:");
scanf("%d",&i);
if(iL.length)
{printf("error!\n");break;}
Delete(L,i);
printlist(L);break;
case 6:Creatlist_sorted(L);
Creatlist_sorted(M);
Merger(L,M,N);
printlist(N);break;
default:printf("谢谢使用!");
}
}
}

线性表的基本用法,运行不出来,请问哪里错误?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-