回 帖 发 新 帖 刷新版面

主题:<求助>线性表编程中遇到的问题

typedef struct            /*定义线性表中元素结构体*/ 

    int *elem; 
    int length; 
    int listsize; 
}Sqlist; 
int List_Openspace(Sqlist *L)   /*开辟线性表存储空间*/ 

     L->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int)); 
    if(!L->elem) 
     return 0; 
      L->length=0; 
       L->listsize=LIST_INIT_SIZE; 
  return 1; 

int List_CunShu(Sqlist *L,int p)    /*往线性表里存入数据*/ 

   int i=0; 
     if(p>LIST_INIT_SIZE) 
      printf("DATA ERROR!"); 
        for(;i<p;i++) 
          { 
       printf("Please input the NO.%d number:",i+1); 
        scanf("%d",&(L->elem[i])); 
         (L->length)++; 
          } 
   return 2; 

Sqlist *La,*Lb; 
main() 
  { 
     int c,d; 
        printf("Please input a number to Lb:"); 
      scanf("%d",&c); 
   List_Openspace(Lb); 
   List_CunShu(Lb,c); 
      printf("\nPlease input a number to La:"); 
      scanf("%d",&d); 
   List_Openspace(La); 
   List_CunShu(La,d); 
   printf("\n"); 
   for(c=0;c<Lb->length;c++) 
   printf(" %d ",Lb->elem[c]); 
   getch(); 
  } 
为什么输出结果Lb里的元素全部变成La里的元素了呢?有哪位大虾能帮小弟解释一下具体的原因么?谢谢了!

回复列表 (共5个回复)

沙发

要加这个吧:
La=(Sqlist *)malloc(sizeof(Sqlist));
Lb=(Sqlist *)malloc(sizeof(Sqlist));
Lb里的元素全部变成La里的元素??没看出来.

板凳


还是不行啊

3 楼

1楼说的是对的啊,你在用La,Lb之前没有分配内存,至于输出,我试过了,输出正常

4 楼

int List_Openspace(Sqlist *L)这个函数就是开辟内存空间的啊!!
结果肯定有问题,我都试了N遍了!!

5 楼

Sqlist *La,*Lb;是你定义的全局变量,而初始化时,只改变了形参,而后的LA初始化把LB覆盖了,
      建议在主函数中定义变量,一般没有特殊要求不要用全局变量,试试

我来回复

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