题目描述:写出一个函数,把首指针为head2的简单链表中的结点全部接在首指针为 head1的简单链表的结点之后,形成一个新链表(头指针仍为head1). 用C语言完成设计、编辑、编译和调式工作。
时间: 2024-03-24 09:39:37 浏览: 49
以下是实现该功能的C语言代码:
```c
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
// 将head2链表接在head1链表尾部
void append(Node **head1, Node *head2) {
if (*head1 == NULL) { // head1为空链表
*head1 = head2;
} else {
Node *p = *head1;
while (p->next != NULL) {
p = p->next;
}
p->next = head2;
}
}
int main() {
// 创建head1链表
Node *head1 = NULL;
for (int i = 1; i <= 5; i++) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = i;
new_node->next = NULL;
append(&head1, new_node);
}
// 创建head2链表
Node *head2 = NULL;
for (int i = 6; i <= 10; i++) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = i;
new_node->next = NULL;
append(&head2, new_node);
}
// 将head2链表接在head1链表尾部
append(&head1, head2);
// 输出新链表
Node *p = head1;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return 0;
}
```
该程序首先定义了一个 `Node` 结构体表示链表的每个节点,包含数据域和指向下一个节点的指针域。然后定义了一个 `append` 函数,该函数用于将 `head2` 链表接在 `head1` 链表的尾部。最后在 `main` 函数中创建了 `head1` 和 `head2` 链表,并将 `head2` 链表接在 `head1` 链表的尾部,最终输出新链表的所有节点数据。
阅读全文