写在前面:
大家好!我是一看就会(只是背了下来)一写就废的菜鸡,欢迎大家来与我一起进行刷题学习!!!下面先上鸡汤(本菜鸡),刷题前怎么能没有鸡汤与美女呢,嘎嘎嘎 ^ - ^
题目:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
示例 2:
示例 3:
提示:
链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
进阶:
链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
思路:
反转链表,只要屁股连头,头连屁股就好啦 ^ - ^qaq;
在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!
代码:
ListNode* reverseList(ListNode* head) {
ListNode* q = nullptr;
ListNode* p = head;
while(p){
ListNode* t = p->next;
p->next = q;
q = p;
p = t;
}
return q;
}
来源:力扣(LeetCode) 链接:[https://leetcode-cn.com/problems/reverse-linked-list](https://leetcode-cn.com/problems/reverse-linked-list)