链表合并问题,请高手解答
/* 这个程序是让两个链表合并,但不知为什么,合并的结果总是链表2的结果,请高手指教,谢谢*/#include <alloc.h>
#include <stdio.h>
typedef struct node{
char data;
struct node *next;
} listnode;
typedef listnode *linklist;
listnode *p;
linklist createlist(void)
{
char ch;
linklist head,r;
listnode *p;
head=NULL;
r=head;
printf("please input the data of list.");
ch=getchar();
while(ch!='\n')
{
p=(listnode*)malloc(sizeof(listnode));
p->data=ch;
p->next=NULL;
r->next=p;
r=p;
ch=getchar();
}
return (head);
}
linklist concatenate(linklist list1,linklist list2)
{
listnode *temp;
if(list1==NULL)
{
return list2;
}
else
{
if(list2!=NULL)
{
for(temp=list1;temp->next;temp=temp->next) ;
temp->next=list2;
}
}
return list1;
}
void main()
{
linklist list1,list2,list3,temp1;
list1=createlist();
list2=createlist();
list3=concatenate(list1,list2);
do
{
printf("%c",list3->data);
list3=list3->next;
}while(list3!=NULL);
printf("\n");
getch();
}