c++编写算法将单链表中元素的次序完全颠倒
时间: 2024-09-12 17:07:25 浏览: 104
数据结构与算法实验(C++):单链表实验-代码
在C++中,要编写一个算法将单链表中的元素次序完全颠倒,你可以通过调整节点的指针来实现。以下是一个基本的算法步骤:
1. 初始化三个指针,分别是`prev`(初始时为`nullptr`),`current`(指向链表的第一个节点),和`next`(用于临时存储下一个节点的指针)。
2. 遍历链表,对每个节点执行以下操作:
- 保存当前节点的下一个节点,即`next = current->next`。
- 将当前节点的指针指向前一个节点`current->next = prev`。
- 移动`prev`和`current`指针,使得`prev`指向当前节点,`current`移动到下一个节点,即`prev = current`,`current = next`。
3. 完成遍历后,`prev`将指向新的头节点,将头指针指向`prev`即可完成整个链表的反转。
下面是一个C++的代码示例,展示了如何实现上述算法:
```cpp
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* reverseList(ListNode* head) {
ListNode *prev = nullptr, *current = head, *next = nullptr;
while (current != nullptr) {
next = current->next; // 保存下一个节点
current->next = prev; // 反转当前节点的指针
prev = current; // 移动prev指针
current = next; // 移动current指针
}
return prev; // prev现在指向新的头节点
}
```
阅读全文