回 帖 发 新 帖 刷新版面

主题:高手帮忙看一下这个程序哪里有错

#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");
}

回复列表 (共1个回复)

沙发

除了 input 函数这里printf("/n");应改成printf("\n");
其他没什么问题啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册