题目:连接两个链表。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList CreatList(int n);
void print(LinkList s);
LinkList connect(LinkList s1,LinkList s2);
int main()
{
int n;
LinkList head1=NULL,head2=NULL,head3=NULL;
printf("1.请输入一个数n:\n");
scanf("%d",&n);
head1=CreatList(n);
printf("2.请输入一个数n:\n");
scanf("%d",&n);
head2=CreatList(n);
printf("输出链表1:\n");
print(head1);printf("\n");
printf("输出链表2:\n");
print(head2);printf("\n");
head3=connect(head1,head2);
printf("输出连接后的链表:\n");
print(head3);
}
LinkList CreatList(int n)
{
int i;
LinkList p,q,L;
L=(LNode*)malloc(sizeof(LNode));
if(!L) printf("error!");
L->next=NULL;
q=L;
for(i=1;i<=n;i++){
p=(LinkList)malloc(sizeof(LNode));
printf("请输入第%d个元素的值",i);
scanf("%d",&(p->data));
p->next=NULL;
q->next=p;
q=p;
}
return L;
}
void print(LinkList s)
{
LinkList L;
L=s->next;
while(L!=NULL){
printf("%d ",L->data);
L=L->next;
}
}
LinkList connect(LinkList s1,LinkList s2)
{
LinkList L=s1;
while(s1->next!=NULL)
s1=s1->next;
s1->next=s2->next;
return L;
}
运行结果: