设计一个算法,利用一个顺序栈逆置一个带头结点的单链表。
时间: 2024-05-01 11:21:10 浏览: 138
3-2 试编写一个算法,在带表头结点的单链表中寻找第i个结点.doc
可以使用一个辅助栈来实现链表的逆置。
具体步骤如下:
1. 首先,从链表的第一个节点开始,依次将每个节点的值依次压入栈中,直到链表末尾。
2. 然后,从链表的第一个节点开始,依次将每个节点的值替换为从栈中弹出的值,直到链表末尾。
3. 最后,返回链表的头节点即可。
代码实现如下:
```c++
void reverse_linked_list_with_stack(ListNode *head) {
if (head == nullptr || head->next == nullptr) {
return;
}
std::stack<int> s;
ListNode *p = head->next;
while (p != nullptr) {
s.push(p->val);
p = p->next;
}
p = head->next;
while (p != nullptr) {
p->val = s.top();
s.pop();
p = p->next;
}
}
```
阅读全文