试写一算法对带头结点的单链表实现就地逆置。
时间: 2023-05-16 22:06:44 浏览: 181
对单链表实现就地逆置算法
4星 · 用户满意度95%
以下是一个实现就地逆置的算法:
```
void reverseList(Node* head) {
Node* prev = NULL;
Node* curr = head->next;
Node* next = NULL;
while (curr != NULL) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head->next = prev;
}
```
这个算法使用三个指针来遍历链表并逆置它。prev 指向前一个节点,curr 指向当前节点,next 指向下一个节点。在每次迭代中,我们将 curr 的 next 指针指向 prev,然后将 prev 和 curr 向前移动一个节点。最后,我们将头结点的 next 指针指向新的头节点 prev。
阅读全文