主题:高手帮忙看一下这个程序哪里有错
#include"stdio.h"
#include"stdlib.h"
#define LISTINTSIZE 100
typedef struct
{
int *elem;
int length;
int listsize;
}sqlist;
void input(sqlist &l)
{ int i;
int a[LISTINTSIZE];
l.elem=a;
printf("请输入你想输入的元素个数");
scanf("%d",&l.length);
printf("请输入线性表元素\n");
for(i=1;i<=l.length;i++)
{
scanf("%d",&(l.elem[i]));
}
printf("\n");
}
void output(sqlist l)
{ int i;
for(i=1;i<=l.length;i++)
printf(" %d",l.elem[i]);
printf("/n");
}
void insert(sqlist &l,int i,int x)
{ int j;
if(i<1||i>l.length+1)
printf("error\n");
else
{
for(j=l.length;j>=i;j--)
{
l.elem[j+1]=l.elem[j];}
l.elem[i]=x;
l.length++;
}
}
int listdelete(sqlist &l,int i)
{
int *p;
int *q;
if((i<1)||(i>l.length)){
printf("i值不合法!");
return 0;
}
p=&(l.elem[i]);
q=l.elem+l.length;
for(++p;p<=q;++p) *(p-1)=*p;
--l.length;
return 1;
}
void mergelist(sqlist la,sqlist lb,sqlist &lc)
{
int *pa,*pb,*pc,*pa_last,*pb_last;
pa=&(la.elem[1]);pb=&(lb.elem[1]);
lc.listsize=lc.length=la.length+lb.length;
pc=lc.elem=(int *)malloc(lc.listsize*sizeof(int));
if(!lc.elem)
printf("error");
pa_last=&(la.elem[1])+la.length-1;
pb_last=&(lb.elem[1])+lb.length-1;
while(pa<=pa_last && pb<=pb_last)
{
if(*pa<=*pb)
*pc++=*pa++;
else
*pc++=*pb++;
}
while(pa<=pa_last)
*pc++=*pa++;
while(pb<=pb_last)
*pc++=*pb++;
}
void main()
{
sqlist l,la,lb,lc;
int i,j,m;
input(l);
output(l);
printf("请输入想插入的位置,和元素的大小");
scanf("%d%d",&i,&j);
insert(l,i,j);
printf("插入后的线性表:");
output(l);
printf("\n");
printf("请输入你想要删除的位置");
scanf("%d",&m);
listdelete(l,m);
printf("删除后的线性表:");
output(l);
printf("\n");
printf("请输入两个有序线性表!\n");
input(la);
input(lb);
mergelist( la,lb,lc);
output(lc);
printf("\n");
}
#include"stdlib.h"
#define LISTINTSIZE 100
typedef struct
{
int *elem;
int length;
int listsize;
}sqlist;
void input(sqlist &l)
{ int i;
int a[LISTINTSIZE];
l.elem=a;
printf("请输入你想输入的元素个数");
scanf("%d",&l.length);
printf("请输入线性表元素\n");
for(i=1;i<=l.length;i++)
{
scanf("%d",&(l.elem[i]));
}
printf("\n");
}
void output(sqlist l)
{ int i;
for(i=1;i<=l.length;i++)
printf(" %d",l.elem[i]);
printf("/n");
}
void insert(sqlist &l,int i,int x)
{ int j;
if(i<1||i>l.length+1)
printf("error\n");
else
{
for(j=l.length;j>=i;j--)
{
l.elem[j+1]=l.elem[j];}
l.elem[i]=x;
l.length++;
}
}
int listdelete(sqlist &l,int i)
{
int *p;
int *q;
if((i<1)||(i>l.length)){
printf("i值不合法!");
return 0;
}
p=&(l.elem[i]);
q=l.elem+l.length;
for(++p;p<=q;++p) *(p-1)=*p;
--l.length;
return 1;
}
void mergelist(sqlist la,sqlist lb,sqlist &lc)
{
int *pa,*pb,*pc,*pa_last,*pb_last;
pa=&(la.elem[1]);pb=&(lb.elem[1]);
lc.listsize=lc.length=la.length+lb.length;
pc=lc.elem=(int *)malloc(lc.listsize*sizeof(int));
if(!lc.elem)
printf("error");
pa_last=&(la.elem[1])+la.length-1;
pb_last=&(lb.elem[1])+lb.length-1;
while(pa<=pa_last && pb<=pb_last)
{
if(*pa<=*pb)
*pc++=*pa++;
else
*pc++=*pb++;
}
while(pa<=pa_last)
*pc++=*pa++;
while(pb<=pb_last)
*pc++=*pb++;
}
void main()
{
sqlist l,la,lb,lc;
int i,j,m;
input(l);
output(l);
printf("请输入想插入的位置,和元素的大小");
scanf("%d%d",&i,&j);
insert(l,i,j);
printf("插入后的线性表:");
output(l);
printf("\n");
printf("请输入你想要删除的位置");
scanf("%d",&m);
listdelete(l,m);
printf("删除后的线性表:");
output(l);
printf("\n");
printf("请输入两个有序线性表!\n");
input(la);
input(lb);
mergelist( la,lb,lc);
output(lc);
printf("\n");
}