猿问

将两个单链表按非递减排序,编译没错,就是运行不出来

#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
 int data;
 struct LNode *next;
}LNode,*LinkList;
int main()
{
 void MergeList(LinkList La,LinkList Lb,LinkList Lc);
 LNode a,b;
 LinkList p,q,w,s,head1,head2;
 int alength=0,blength=0,i,j;
 p=&a;
 q=&b;
    w=NULL;
 head1=p;
 head2=q;
    //p=(LinkList)malloc(sizeof(LNode)); 
 printf("请输入第一个线性表的长度:");
 scanf("%d",&alength);
 printf("请输入第一个线性表的数据:");
 for(i=1; i<=alength;i++)
 {
  s=(LinkList)malloc(sizeof(LNode));
  p->next=s;
  p=p->next;
  scanf("%d",&p->data);
 }
 p->next=NULL;
 printf("请输入第二个线性表的长度:");
 scanf("%d",&blength);
 printf("请输入第二个线性表的数据:");
 for(j=1; j<=blength;j++)
 {
  s=(LinkList)malloc(sizeof(LNode));
  q->next=s;
  q=q->next;
  scanf("%d",&q->data);
 }
 q->next=NULL;
    MergeList(head1,head2,w);
 while(head1->next!=NULL)
 {
  printf("%d",head1->next->data);
  head1=head1->next;
 }
 return 0;
}
void MergeList(LinkList La,LinkList Lb,LinkList Lc)
{
 LinkList pa,pb,pc;
 pa=La->next;pb=Lb->next;
 Lc=pc=La;
 while(pa&&pb)
 {
  if(pa->data<=pb->data)
  {
   pc->next=pa;
   pc=pa;
   pa=pa->next;
  }
  else
  {
   pc->next=pb;
   pc=pb;
   pb=pb->next;
  }
 }
 pc->next=pa?pa:pb;
 free(Lb);
 
}

慕少2215682
浏览 1322回答 1
1回答
随时随地看视频慕课网APP
我要回答