user-0 提问: 关于链表输入集合问题，代码可以输入但是不能输出？？

回复:
user: user-1
content: 在create函数 while(1)上面加个p1->next=NULL;

user: user-1
content: #include<stdio.h>  #include<stdlib.h>  #include<time.h>  typedef int ElemType;  typedef struct LNode  {      ElemType data;      struct LNode *next;  } LNode,*LinkList;  void InitList(LinkList *L)  {      *L=(LinkList)malloc(sizeof(LNode));      (*L)->next=NULL;  }   /*LinkList CreateFromTail(LinkList L, int n, int N[])//尾插法建表  {      LinkList p,q;      int i;      p=(LNode*)malloc(sizeof(LNode));      L->next=NULL;      if(n!=0)      {          for(i=0; i<n; i++)          {              q=(LNode*)malloc(sizeof(LNode));              q->data=N[i];              p->next=q;              p=q;          }      }      p->next=NULL;      return L;  }*/  LinkList Creat(char n)  //输入集合  {      LinkList head=NULL,p1,p2; 	 ElemType num;      printf("请输入%c单链表集合（以0为结束符）：\n",n);      scanf("%d",&num);      if(num==0) 		return head;  	 head=p1=(LinkList)malloc(sizeof(LNode)); 	 p1->data=num;      while(1)      {          scanf("%d",&num);          if(num==0)              return head; 		 p2=(LinkList)malloc(sizeof(LNode)); 		 p2->data=num; 		 p2->next=NULL;          p1->next=p2;          p1=p2;      }  }  LinkList Sort(LinkList SL)/*递增排序函数*/  {      LinkList p1,p2;      int temp; 	 for(p1=SL->next; p1!=NULL; p1=p1->next)      {          for(p2=p1->next; p2!=NULL; p2=p2->next)          {              if(p1->data>p2->data)              {                  temp=p2->data;                  p2->data=p1->data;                  p1->data=temp;              }          }      }      return SL;  }  void Print(LinkList L) //  输出集合  {      LinkList p;      p=L->next;;      while(p)      {          printf("%d\t",p->data);          p=p->next;      }      printf("\n");  }  void AddList(LinkList La,LinkList Lb)     //求并集并输出  {      LinkList Lc;      LinkList cur,la,lb,ln;       Lc=cur=(LinkList)malloc(sizeof(LNode));      la=La->next;      lb=Lb->next;       while(la && lb)      {          if(la->data<lb->data)          {              ln=(LinkList)malloc(sizeof(LNode));              ln->data=la->data;              cur->next=ln;              cur=ln;              la=la->next;          }          else if(la->data==lb->data)          {              ln=(LinkList)malloc(sizeof(LNode));              ln->data=la->data;              cur->next=ln;              cur=ln;              la=la->next;              lb=lb->next;          }          else          {              ln=(LinkList)malloc(sizeof(LNode));              ln->data=lb->data;              cur->next=ln;              cur=ln;              lb=lb->next;          }      }      while(la)      {          ln=(LinkList)malloc(sizeof(LNode));          ln->data=la->data;          cur->next=ln;          cur=ln;          la=la->next;      }      while(lb)      {          ln=(LinkList)malloc(sizeof(LNode));          ln->data=lb->data;          cur->next=ln;          cur=ln;          lb=lb->next;      }      cur->next=NULL;       Print(Lc);  }  void JiaoList(LinkList La,LinkList Lb)  {      LinkList Lc,la,lb,ln,cur;       Lc=cur=(LinkList)malloc(sizeof(LNode));      la=La->next;      lb=Lb->next;      while(la && lb)      {          if(la->data<lb->data)              la=la->next;          else if(la->data==lb->data)          {              ln=(LinkList)malloc(sizeof(LNode));              ln->data=la->data;              cur->next=ln;              cur=ln;              la=la->next;              lb=lb->next;          }          else              lb=lb->next;      }      cur->next=NULL;      Print(Lc);  }  void ChaList(LinkList La,LinkList Lb)  {      LinkList Lc,la,lb,cur,ln;       Lc=cur=(LinkList)malloc(sizeof(LNode));      la=La->next;      lb=Lb->next;       while(la && lb)      {          if(la->data<lb->data)          {              ln=(LinkList)malloc(sizeof(LNode));              ln->data=la->data;              cur->next=ln;              cur=ln;              la=la->next;          }          else if(la->data==lb->data)          {              la=la->next;              lb=lb->next;          }          else              lb=lb->next;      }      while(la)      {          ln=(LinkList)malloc(sizeof(LNode));          ln->data=la->data;          cur->next=ln;          cur=ln;          la=la->next;      }      cur->next=NULL;      Print(Lc);  }  int main()  {      LinkList La, Lb;      //LinkList head,p1,p2;      //int na,nb;      InitList(&La);      InitList(&Lb);      La->next=Creat('A') ;      Lb->next=Creat('B') ;      Sort(La);      Sort(Lb);      Print(La);      Print(Lb);      printf("并集为：\n");      AddList(La,Lb);      printf("交集为：\n");      JiaoList(La,Lb);      printf("差集为：\n");      ChaList(La,Lb); 	 system("pause");      return 0;  }