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;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。