逆向建立单链表的代码解析
时间: 2023-05-18 14:02:42 浏览: 96
逆向建立单链表的代码解析:
逆向建立单链表是指从链表的尾部开始逐个添加节点,最终形成一个完整的链表。下面是一个简单的 C 语言代码示例:
```
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
void addNode(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = (*head_ref);
(*head_ref) = new_node;
}
void printList(struct Node* node) {
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
}
int main() {
struct Node* head = NULL;
addNode(&head, 1);
addNode(&head, 2);
addNode(&head, 3);
printf("Reversed Linked list: ");
printList(head);
return 0;
}
```
在这个代码中,我们定义了一个结构体 `Node`,其中包含了一个整数类型的数据 `data` 和一个指向下一个节点的指针 `next`。我们还定义了两个函数 `addNode` 和 `printList`,分别用于添加节点和打印链表。
在 `addNode` 函数中,我们首先使用 `malloc` 函数动态分配了一个新的节点,并将新节点的 `data` 值设置为传入的参数 `new_data`。然后,我们将新节点的 `next` 指针指向当前链表的头节点,最后将新节点设置为新的头节点。
在 `printList` 函数中,我们使用一个循环遍历整个链表,并打印每个节点的 `data` 值。
在 `main` 函数中,我们首先定义了一个空的头节点 `head`,然后依次调用 `addNode` 函数添加三个节点,最后调用 `printList` 函数打印整个链表。
运行这个程序,我们可以得到如下输出:
```
Reversed Linked list: 3 2 1
```
这个输出表示我们成功地逆向建立了一个包含三个节点的单链表。
阅读全文