用C语言编写逆置带头结点的单链表L详细。
时间: 2024-09-22 14:06:00 浏览: 42
(数据结构C语言版)顺序表和单链表的逆置.docx
在C语言中,逆置一个带头结点的单链表通常涉及到三个步骤:遍历链表、交换节点指针以及更新头结点的指向。
首先,我们需要创建一个临时变量temp,用于存储当前节点的下一个节点的地址。然后,我们将当前节点的next指针指向temp保存的节点,接着将temp的值设为当前节点,移动到下一个节点。这个过程一直持续到链表的末尾,最后需要更新头结点的next指针,使其指向原来的第二个节点,因为现在第一个节点变成了原尾部。
以下是逆置链表的伪代码示例:
```c
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode *prev = NULL, *current = head, *next = NULL;
// 遍历链表,记录节点并交换指针
while (current != NULL) {
next = current->next;
current->next = prev; // 将当前节点的next指向前一个节点
prev = current; // 更新前一个节点为当前节点
current = next; // 移动到下一个节点
}
// 如果链表非空,则新的头结点是原尾部
if (prev != NULL)
head = prev;
return head;
}
```
阅读全文