编写实现带头结点单链表就地逆置的成员函数
时间: 2024-02-11 16:38:34 浏览: 89
以下是C++代码实现:
```c++
void LinkedList::reverse() {
if (head == nullptr || head->next == nullptr) {
return;
}
Node* prev = nullptr;
Node* current = head->next;
Node* next = current->next;
while (next != nullptr) {
current->next = prev;
prev = current;
current = next;
next = next->next;
}
current->next = prev;
head->next = current;
}
```
该函数首先判断链表是否为空或仅有一个节点,如果是,则直接返回。否则,定义三个指针变量:`prev`、`current`和`next`。其中,`prev`指向前驱节点,`current`指向当前节点,`next`指向后继节点。初始时,`prev`为`nullptr`,`current`为头结点的下一个节点,`next`为`current`的下一个节点。然后,进入循环,将`current`的`next`指针指向`prev`,然后将三个指针变量向后移动一位。当`next`为`nullptr`时,循环结束。最后,将`current`的`next`指向`prev`,将头结点的`next`指针指向`current`,完成链表的逆置。
阅读全文