題目:連線兩個連結串列。
阿新 • • 發佈:2021-02-03
題目:連線兩個連結串列。
#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;
}
執行結果: