码迷,mamicode.com
首页 > 其他好文 > 详细

【链表】leetcode206——反转链表(双指针法)

时间:2021-02-09 12:19:16      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:lis   tco   ima   init   UNC   nod   func   etc   tmp   

编号206:反转链表

题意:反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

思路

这里我们只需要改变节点Next域的指向即可,实现原地反转。这里我们需要借助一个辅助指针pre初始化指向nil最后最为新的头节点,一个cur指针指向链表的当前头节点head,即双指针大法。还需要一个临时指针tmp,用于标记cur指针指向的下一个节点。过程如下图,引入了公众号【代码随想录】的动图方便展示:

技术图片

具体代码如下:

//Definition for singly-linked list.
type ListNode struct {
	Val  int
	Next *ListNode
}

//改变Next指针的指向  双指针法
func reverseList(head *ListNode) *ListNode {
	var pre *ListNode = nil  
    var tmp *ListNode
    cur := head
    for cur != nil{
        tmp = cur.Next
        cur.Next = pre
        pre = cur
        cur = tmp
    }
    return pre
}

【链表】leetcode206——反转链表(双指针法)

标签:lis   tco   ima   init   UNC   nod   func   etc   tmp   

原文地址:https://www.cnblogs.com/zmk-c/p/14390003.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!