两个链表连接的问题 有几句不太明白 来个大哥说说
标红线的部分没有用循环 为什么就能把所有的链表二赋给新链表呢?#include <stdio.h>
#include <stdlib.h>
#define NULL 0
typedef struct link
{int data;
struct link *next;
}node;
typedef node *style;/*style定义node指针类型*/
style create()
{style p, s, head;
int x,circle=1;
head=(style)malloc(sizeof(node));/*分配空间*/
p=head;
while(circle)
{
scanf("%d",&x);
if(x!=0)
{s=(style)malloc(sizeof(node));
s->data=x;
p->next=s;
p=s;
}
else
circle=0;
}
p->next=NULL;/*尾节点*/
head=head->next;/*删除空的头节点*/
return head; /*返回指针链表头表头的指针*/
}
style connect(style chain1,style chain2)/*连接函数*/
{style new_link,head;
head=chain1;
while(chain1)
{new_link=chain1;
chain1=chain1->next;
}
new_link->next=chain2;
new_link=chain2;
return head;
}
void print(style p)/*输出函数*/
{while(p!=NULL)
{printf("%d ",p->data);
p=p->next;
}
return;
}
void main()
{style chain1,chain2,new_link;
printf("请输入第一个链表:\n");
chain1=create();
printf("请输入第二个链表:\n");
chain2=create();
printf("将两个链表连接后为:\n");
print(connect(chain1,chain2));
printf("\n");
}