1.题目形容:
翻转一个链表
2.样例输出
输出:链表 = 1->2->3->null
输入:3->2->1->null
3.题目思路剖析:
在这里其实就是使用一个遍历的思维,意思就是先在最开始的时候,定义一个空的区域,定义为指针prev,而后将链表的最前端视为curr,最前端元素的后继元素标为指针*next。
在遍历的时候,将curr指向的元素,也就是当初的元素的后继元素指向后面的元素,而后将curr后移,将prev指向当初的元素,next指向前面元素的后继元素,而后再将*curr指向的元素的后继元素指向后面那一个,再持续递推上来。最初返回prev,因为这时候prev刚刚好遍历齐全部的链表。
4.代码示例:
class Solution {public: ListNode* reverse(ListNode *head) { ListNode* prev = nullptr; ListNode* curr = head; while (curr) { ListNode* next = curr->next; curr->next = prev; prev = curr; curr = next; } return prev; }};