回 帖 发 新 帖 刷新版面

主题:关于单链表的合并的问题 调试了半天找不到错在哪

[code]
       struct Linklist *merge(struct Linklist *La,struct Linklist *Lb,
                              struct Linklist *Lc)    
              
              {   
                  struct Linklist *pa,*pb,*pc1,*pc2; 
                  Lc=(struct Linklist*)malloc(LEN);
                  pc1=Lc;
                  pa=La->next;
                  pb=Lb->next;
                  while(pa||pb)
                  {
                      pc2=(struct Linklist*)malloc(LEN);
                      pc1->next=pc2;pc1=pc2;
                      if(!pa)
                      {
                         pc1->data=pb->data; pb=pb->next;}
                      else if(!pb)
                      {
                         pc1->data=pa->data; pa=pa->next;}
                      else if(pa->data<pb->data)
                      {
                        pc1->data=pa->data; pa=pa->next;}
                     else if(pa->data==pb->data)
                      {
                     pc1->data=pa->data; pa=pa->next; pb=pb->next;
                        }
                        else{pc1->data=pb->data; pb=pb->next;}
                       ++i;           //i是记录结点数.
                        
                  }
                  pc1->next=NULL;
                      free(La);
                      free(Lb);
                      return Lc;
              }
[/code]
   
这个只是合并的那个函数 .. A.B为2个递增的单链表. 
问题出在第一个结点貌似被覆盖了..后面的结点打印的出来 
哪位看一下

回复列表 (共1个回复)

沙发

If input '0',stop input Linklist.
Creat Linklist A:
1
2
3
0
Print created Linklist:
1    2    3
Creat Linklist B:
1
5
6
0
Print created Linklist:
1    5    6
Linklist A U B :
Now,print Linklist_Lc:
Now,the new Linklist have 4 nodes
3998072
2
3
5
6    请按任意键继续. . .

这是运行后的!
1被盖了 ..

我来回复

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