题目描述
知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据结点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。
输入
m=5
3 6 1 3 5
n=4.
7 10 8 4
输出
3 6 1 3 5 7 10 8 4
样例输入
7
3 5 1 3 4 6 0
5
5 4 8 9 5
样例输出
3 5 1 3 4 6 0 5 4 8 9 5
思路:先通过创建一个带头结点的链表,再把第二个链表接在第一个链表的后面。
#include <cstdio>
struct node {
int num;
struct node *next;
};
int main() {
struct node *head, *p, *pre;
int m, n;
scanf("%d", &m);
head = NULL;
for (int i = 0; i < m; i++) {
p = new node;
scanf("%d", &p->num);
p->next = NULL;
if (!head) {
head = p;
} else {
pre->next = p;
}
pre = p; //移动到下一个结点
}
scanf("%d", &n);
for (int i = 0; i < n; i++) {
p = new node;
scanf("%d", &p->num);
p->next = NULL; //新结点始终指向空结点
pre->next = p;
pre = p;
}
p = head;
printf("%d", p->num);
p = p->next;
while (p) {
printf(" %d", p->num);
p = p->next;
}
return 0;
}