用C语言创建两个链表,把两个链表连接后输出,链表合并后输出的新链表之间有个随机数,请问这是什么情况?
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct list
{
int data;
struct list *next;
}list,*LinkList;
LinkList CreateList();
LinkList connect(LinkList h1,LinkList h2);
void print(LinkList h3);
int main()
{
LinkList p1,p2,p3;
p1=CreateList();
p2=CreateList();
p3=connect(p1,p2);
print(p3);
}
LinkList CreateList()
{
int i,n;
LinkList Head,p,q;
printf("请输入链表的长度:");
scanf("%d",&n);
Head=malloc(sizeof(LinkList));
Head->next=NULL;
p=Head;
for(i=0;i<n;i++)
{
q=malloc(sizeof(LinkList));
scanf("%d",&(q->data));
p->next=q;//把新节点加入到链表中
p=q;//p指向新的结点
}
p->next=NULL;//设置链表结束标志符
return Head;
}
LinkList connect(LinkList h1,LinkList h2)
{
LinkList Head1;
Head1=h1;
while (Head1->next)
{
Head1=Head1->next;
}
Head1->next=h2;
return h1;
}
void print(LinkList h3)
{
LinkList p=h3->next;
while (p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
return;
}