写一个函数,实现对链表的翻转
输入:1->2->3->4->5->NULL;
输出:5->4->3->2->1->NULL;
思想:利用栈先进后出的思想,将链表依次输入至链表中,再出栈,得到链表的翻转。
class Solution {
public:
ListNode* reverseList(ListNode* head) {
stack<int> stack;
ListNode*p=head;
while(p){
stack.push(p->val);
p=p->next;
}
p=head;
while(p){
p->val=stack.top();//返回栈顶数但不删除
stack.pop();//出栈,删除栈顶元素
p=p->next;
}
p=head;
return p;
}
};