刷题笔记(十)——反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:采用栈,从头遍历将数值入栈,再从头遍历出栈给节点赋值。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
stack<int> s;
ListNode* p=pHead;
while(p!=NULL)
{
s.push(p->val);
p=p->next;
}
ListNode* q=pHead;
while(q!=NULL)
{
q->val=s.top();
s.pop();
q=q->next;
}
return pHead;
}
};
评论区看到一个代码,写的挺妙的