题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
思路
代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
// 定义一个栈,用于装链表的数据倒序的装入
stack <int> s;
// 防止在将链表压栈的时候,都节点丢失,然后保存head地址
ListNode* temp = head;
// 倒叙的装入在栈中装入链表
while (temp)
{
s.push(temp->val);
temp = temp->next;
}
// 从新找到head起始地址,将head中的val值替换为压栈的倒序值
temp = head;
// 循环按顺序替换head地址及以后地址的val值
while (temp)
{
temp->val = s.top();
s.pop();
temp = temp->next;
}
// 返回原来的头结点
return head;
}
};