题目描述
输入一个链表,反转链表后,输出新链表的表头。
基本思路
把链表里的节点先压栈,然后弹栈。
代码实现
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *p = pHead;
if (p==NULL || p->next==NULL) { return pHead; }
else {
stack<ListNode*> stk;
while (p != NULL) {
stk.push(p);
p = p->next;
}
ListNode* Head = stk.top();
stk.pop();
p = Head;
while (!stk.empty()) {
p->next = stk.top();
p = p->next;
stk.pop();
}
p->next = NULL;
return Head;
}
}
};
本文介绍了一种通过栈来实现链表反转的方法。首先将链表的所有节点压入栈中,再依次弹出栈顶元素连接成新的链表。此方法简单易懂,适合初学者学习。
172万+

被折叠的 条评论
为什么被折叠?



