关于数据结构单链表的问题,求各位大神帮帮忙
程序作用是:两个按照递增次序排列的单链表la、lb,将其合并为一个递减次序排列的单链表lc ,并要求利用原来两个单链表的结点存放归并后的链表现在问题是,输入一组数据如5 4 3 2 1 eof 然后应该是继续输入另外一组数据创建lb的链表,但是程序直接就结束运行了
请问一下这是什么问题,应该如何解决
---来自大一腊鸡的请求
程序代码:
#include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node *next; }NODE,*Linkedlist; Linkedlist Linkedlistcombine(Linkedlist la,Linkedlist lb); //链表递减合并 Linkedlist Linkedlistcreate(void); //读取数据创建单链表 int main(){ NODE *la,*lb,*lc; NODE *p; printf("请按照递减次序输入la的数据:"); la=Linkedlistcreate(); printf("\n请按照递减次序输入lb的数据:"); lb=Linkedlistcreate(); lc=Linkedlistcombine(la, lb); p=lc->next; for(;p!=NULL;p=p->next){ printf("%d",p->data); } } Linkedlist Linkedlistcreate(void){ NODE *p; p=(NODE*)malloc(sizeof(NODE)); if(!p){ printf("空间申请失败"); exit(0); } p->next=NULL; NODE *l; int x; while(scanf("%d",&x)!=0){ l=(NODE *)malloc(sizeof(struct node)); l->data=x; l->next=p->next; p->next=l; } return p; } Linkedlist Linkedlistcombine(Linkedlist la,Linkedlist lb){ NODE *lc,*cura,*curb,*temp; temp=(NODE*)malloc(sizeof(struct node)); if(!temp){ printf("空间申请失败"); exit(0); } lc=(NODE*)malloc(sizeof(struct node)); if(!lc){ printf("空间申请失败"); exit(0); } lc->next=NULL; cura=la->next; curb=lb->next; while(!temp){ if(cura->data<=curb->data){ temp=cura->next; cura->next=lc->next; lc->next=cura; cura=temp; } if(cura->data>curb->data){ temp=curb->next; curb->next=lc->next; lc->next=curb; curb=temp; } } return lc; }