求大佬指出问题,困扰了几天了..
#include<stdio.h>#include<stdlib.h>
#define MAX 100
typedef struct
{
int data[MAX];
int length;
} seqlist;
void creat(seqlist *L)
{
L->length=0;
}
int inset(seqlist *L,int i,int d)/*插入1*/
{
int j;
if(i<1||i>L->length+3)
{printf("错误位置\n");return 0;}
if(L->length==MAX-1)
{printf("表满,不能插入");return 0;}
for(j=L->length+1;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=d;
L->length++;
return 1;
}
int delete_seqlist(seqlist *L,int i)/*删除1*/
{
int j=0;
if(i<0||i>L->length+1)
{printf("位置错误\n");return 0;}
for(j=i;j<=L->length;j++)
L->data[j-1]=L->data[j];
L->length--;
return 1;
}
void hebing(seqlist a,seqlist b,seqlist *c)/*合并*/
{
int i=0,j=0,k=0;
while(i<=a.length&&j<=b.length)
if(a.data[i]<b.data[j])
c->data[k++]=a.data[i++];
else
c->data[k++]=b.data[j++];
while(i<=a.length)
c->data[k++]=a.data[i++];
while(j<=b.length)
c->data[k++]=b.data[j++];
c->length=k-1;
}
void printf_seqlist(seqlist *L)/*输出*/
{
int i=0;
for(i=0;i<L->length+2;i++)
printf("%d\n",L->data[i]);
}
void tjia(seqlist *L,int n)/*在表内添加元素*/
{ int i=0,k=0;
for(i=0;i<n;i++)
{ scanf("%d",&k);
L->data[i]=k;
}
L->length=n-2;
}
void cr(seqlist*L) /*插入2*/
{ int i=0,d=0;
printf ("输入位置和数值:\n");
scanf("%d%d",&i,&d);
if(inset(L,i,d))
{
printf("插入成功\n");
printf_seqlist(L);
}
}
void sc(seqlist*L)/*删除2*/
{ int i=0;
printf ("输入位置\n");
scanf("%d",&i);
if(delete_seqlist(L,i-1))
{
printf("删除成功\n");
printf_seqlist(L);
}
}
main()
{ int na,nb,ic=0,i=0,d=0;
na=3,nb=5;
seqlist la,lb,lc;
creat(&la); creat(&lb); creat(&lc);
printf ("创建la表,输入表内元素:\n");
tjia(&la,na);
printf("输出la表:\n");
printf_seqlist(&la);
printf("是否在la中插入?(需要插入输入1,输入其他则不插入)\n");
scanf("%d",&ic);
if(ic==1)
cr(&la);
printf("是否删除la中的元素?(需要插入输入1,输入其他则不插入)\n");
scanf("%d",&ic);
if(ic==1)
sc(&la);
printf ("创建lb表,输入表内元素:\n");
tjia(&lb,nb);
printf("输出lb表:\n");
printf_seqlist(&lb);
printf("是否在lb中插入?(需要插入输入1,输入其他则不插入)\n");
scanf("%d",&ic);
if(ic==1)
cr(&lb);
printf("是否删除lb中的元素?(需要插入输入1,输入其他则不插入)\n");
scanf("%d",&ic);
if(ic==1)
sc(&lb);
hebing(la,lb,&lc);
printf("输出lc表:\n");
printf_seqlist(&lc);
}