关于数据结构单链表的问题,求各位大神帮帮忙
程序作用是:两个按照递增次序排列的单链表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;
}






