P39 编写算法实现带头结点单链表的就地逆置,即利用原带头节点单链表的节点空间把元素序列 a0,a1…, an-1 逆置为an-1,…,a1,a0。
时间: 2023-06-14 17:04:06 浏览: 104
The-reverse-of-sqlist.rar_visual c
算法实现如下:
1. 定义三个指针:pre、cur、suc,分别指向当前节点的前驱、当前节点、当前节点的后继。
2. 将 cur 指向头结点的下一个节点,pre 指向头结点,suc 指向 cur 的后继。
3. 遍历链表,对于每个节点,将其指向其前驱节点,然后依次更新 pre、cur、suc 指针。
4. 遍历结束后,将头结点的下一个节点指向 pre,完成链表的就地逆置。
代码实现如下:
```C++
void reverseList(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return;
}
ListNode* pre = head;
ListNode* cur = head->next;
ListNode* suc = cur->next;
pre->next = nullptr;
while (cur != nullptr) {
cur->next = pre;
pre = cur;
cur = suc;
if (suc != nullptr) {
suc = suc->next;
}
}
head->next = pre;
}
```
阅读全文