编写一个cpp伪代码,反转双链表中的所有节点
时间: 2024-10-29 17:11:43 浏览: 19
在C++中,我们可以使用迭代或递归的方式来反转一个双向链表。这里是一个简单的迭代伪代码示例:
```cpp
// 定义链表节点结构体
struct ListNode {
int val;
ListNode *next;
ListNode *prev; // 双向链表需要 prev 指针
ListNode(int x) : val(x), next(NULL), prev(NULL) {}
};
// 反转链表函数
ListNode* reverseList(ListNode* head) {
ListNode* current = head;
ListNode* previous = nullptr;
// 当当前节点不为空时,做以下操作
while (current != nullptr) {
// 保存当前节点的下一个节点
ListNode* nextTemp = current->next;
// 更新当前节点的指向
current->next = previous;
// 更新前驱和后继指针
if (previous != nullptr)
previous->prev = current;
else
head = current; // 如果这是头节点,也要更新头
// 移动到下一个节点
previous = current;
current = nextTemp;
}
return head;
}
```
在这个伪代码中,我们遍历链表,每次都将当前节点的`next`指向前一个节点,同时更新前驱和后继指针。最后返回新的头节点,链表就被成功反转了。
阅读全文