力扣第206题
类型:链表题目:
示例1示例2示例3解题思路 c++python
作者 github链接: github链接 力扣第206题 类型:链表 题目:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例1输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]
示例2输入:head = [1,2]输出:[2,1]
示例3输入:head = []输出:[]
解题思路思路细节:
定义两个指针:prev:前指针节点;curr:当前指针节点前指针节点指向null,curr放在链表的head处curr!=null就一直循环因为下一步prev指向了curr->next,连接后面的链表即将断开,这是我们做一个提前准备,搞一个next指针当临时的给后面的链表做一个标志,以便curr向后面迭代。curr->next原来链接后面的值,现在让它断开,来让prev来连接curr->next。prev向后面移动,curr向后面移动(这里就用到了前面准备好的临时变量next,正是因为有next,才能让curr找到下一个位置继续迭代)迭代完成,返回整个链表,实现反转 c++class Solution {public: ListNode* reverseList(ListNode* head) { ListNode * prev = NULL;//前指针节点指向null ListNode *curr = head;//curr放在链表的head处 while(curr){//curr!=null就一直循环 ListNode *next = curr->next;//因为下一步prev指向了curr->next,连接后面的链表即将断开,这是我们做一个提前准备,搞一个next指针当临时的给后面的链表做一个标志,以便curr向后面迭代。 curr->next = prev;//curr->next原来链接后面的值,现在让它断开,来让prev来连接curr->next prev = curr;//prev向后面移动 curr = next;//curr向后面移动(这里就用到了前面准备好的临时变量next,正是因为有next,才能让curr找到下一个位置继续迭代) } return prev;//迭代完成,返回整个链表,实现反转 }};
python# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution: def reverseList(self, head: ListNode) -> ListNode: prev = None curr = head while curr is not None: next = curr.next curr.next = prev prev = curr curr = next return prev
解题草稿纸(仅供参考,如有错误还望指正)