c语言设计单向链表结构,并完成反转链表功能
时间: 2024-09-14 14:05:39 浏览: 52
在C语言中设计单向链表结构通常包括定义链表节点的数据结构和相关操作函数。下面是一个简单的例子:
首先定义链表节点的结构体,包含数据域和指向下一个节点的指针:
```c
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域,指向下一个节点
} Node;
```
接着可以编写函数来创建链表节点、插入节点、删除节点和反转链表等操作。这里重点介绍如何实现反转链表的功能。
反转链表可以通过迭代的方式实现,具体步骤如下:
1. 初始化三个指针,分别命名为 `prev`、`current` 和 `next`。
2. 遍历原始链表,每次迭代中将 `current` 指向的节点的 `next` 指针指向前一个节点 `prev`。
3. 同时移动 `prev` 和 `current` 指针,直到 `current` 指向 `NULL`,这时 `prev` 将指向原链表的最后一个节点,即反转后链表的第一个节点。
4. 最后更新链表的头指针,指向 `prev`。
下面是反转链表的函数实现:
```c
Node* reverseList(Node* head) {
Node *prev = NULL, *current = head, *next = NULL;
while (current != NULL) {
next = current->next; // 保存下一个节点
current->next = prev; // 反转当前节点的指针
prev = current; // 移动prev到当前节点
current = next; // 移动current到下一个节点
}
head = prev; // 更新头指针
return head;
}
```
这段代码将会反转给定的单向链表,并返回新的头指针。
阅读全文