永发信息网

求助顺序表插入的问题!!!

答案:1  悬赏:40  手机版
解决时间 2021-02-01 01:21
  • 提问者网友:心如荒岛囚我终老
  • 2021-01-31 17:31
求助顺序表插入的问题!!!
最佳答案
  • 五星知识达人网友:时间的尘埃
  • 2021-01-31 18:35
#include
#include
#define MAXSIZE 100
typedef int ElemType;
typedef struct list
{
ElemType *elem;
int listsize;
int length;
}Sqlist;

void initlist_sq(Sqlist *L)
{
L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
if(!L->elem) exit(0);
L->length=0;
L->listsize=MAXSIZE;
}

void insert_sq(Sqlist *L,int n,int x)
{
int i=0;
if(n<0||n>(L->length))
{printf("错误");
exit(1);}
if(L->length==MAXSIZE)
{printf("overflow");
exit(1);
}
if(n>=0&&nlength)
*(L->elem+n)=x;
if(n==(L->length))
{*(L->elem+n)=x;
L->length=L->length+1;}

//printf("**********Sqlist inserted**********\n");
}

void creat_sq(Sqlist *L)
{
int tablen,i=0;
ElemType temp;
printf("please input the table length\n");
scanf("%d",&tablen);
printf("please input a serial number\n");
do
{
scanf("%d",&temp);
insert_sq(L,i,temp);
i++;
}while((ilistsize ));
}

void display_sq(Sqlist *L)
{
int i;
i=0;
do {printf("%d ",*(L->elem+i));}
while(++ilength);
printf("\n**********Sqlist diplay**********\n");
}
Search_sq(Sqlist *L,int x)
{
int i;
for(i=0;ilength;i++)
{if(L->elem[i]==x)
return i+1;
}
return 0;
}

void delete_sq(Sqlist *L,int pos)
{
int i=0;
if(pos<1&&pos>L->length)
{printf("错误");
exit(0);
}
if(pos>=1&&poslength)
{ for(;poslength;pos++)
*(L->elem+pos)=*(L->elem+pos+1);}

L->length=L->length-1;

printf("\n**********%d deleted**********\n",pos);
}
int main(void)
{
Sqlist L1;
ElemType temp;
char cmd;
int i=0;
initlist_sq(&L1);
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=DELETE\n");

while(1)
{
cmd=getchar();
switch(cmd)
{
case 'C':
case 'c':
creat_sq(&L1);
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARCH,D=DELETE\n");
break;
case 'I':
case 'i':
printf("please input the number to be inserted\n");
scanf("%d",&temp);
printf("please input the position to be inserted(1~100)\n");
scanf("%d",&i);
insert_sq(&L1,i-1,temp);
printf("**********Sqlist inserted**********\n");
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSER,S=SEARCT,D=DELETE\n");
break;
case 'S':
case 's':
printf("please input the number wanted\n");
scanf("%d",&temp);
printf("位置:%d\n",Search_sq(&L1,temp));

printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=DELETE\n");
break;
case 'P':
case 'p':
display_sq(&L1);
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=DELETE\n");
break;
case 'X':
case 'x':
free(L1.elem);
return 1;
case 'd':
case 'D':
printf("请输入要删除的位置\n");
scanf("%d",&temp);
delete_sq(&L1,temp-1);
printf("X=EXIT,C=CREAT,P=DISPLAY,I=INSERT,S=SEARC,D=DELETE\n");
break;

default:break;
}
}

//getchar();
return 1;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯