借助栈来实现单链表的逆置
时间: 2023-06-11 11:05:03 浏览: 199
利用栈实现逆置单链表
5星 · 资源好评率100%
好的,以下是用栈来实现单链表的逆置的方法:
1. 遍历单链表,将每个节点依次压入栈中。
2. 弹出栈中的节点,依次连接成新的单链表。
下面是具体的实现代码:
```c++
#include <iostream>
#include <stack>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* reverseList(ListNode* head) {
if (!head) return NULL;
stack<ListNode*> s;
ListNode* p = head;
while (p) {
s.push(p);
p = p->next;
}
ListNode* newHead = s.top();
s.pop();
p = newHead;
while (!s.empty()) {
p->next = s.top();
s.pop();
p = p->next;
}
p->next = NULL;
return newHead;
}
int main() {
ListNode* head = new ListNode(1);
head->next = new ListNode(2);
head->next->next = new ListNode(3);
head->next->next->next = new ListNode(4);
ListNode* newHead = reverseList(head);
while (newHead) {
cout << newHead->val << " ";
newHead = newHead->next;
}
return 0;
}
```
以上是用栈来实现单链表的逆置的方式,希望能够帮助到您。
阅读全文