反转链表的golang实现

反转链表的golang实现,第1张

概述问题:反转一个单链表。 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL 首先先认识一下链表这个数据结构: 链表节点中有两个元素: 值 指针 type ListNode struct { Val int Next *ListNode} Next指向下一个节点 那么这道题其实就是把指针指向前一个节点 位置调换次数 pre cur wh 问题:反转一个单链表。
输入: 1->2->3->4->5->NulL输出: 5->4->3->2->1->NulL

首先先认识一下链表这个数据结构:

链表节点中有两个元素:

值 指针
type ListNode struct {    Val  int    Next *ListNode}

Next指向下一个节点

那么这道题其实就是把指针指向前一个节点

位置调换次数 pre cur whole
0 nil 1->2->3->4->5 1->2->3->4->5
1 1->nil 2->-3>->4->5 2->3->4->5->1->nil
2 2->1->nil 3->4->5 3->4->5->2->1->nil
3 3->2->1->nil 4->5 4->5->3->2->1->nil
4 4->3->2->1->nil 5 5->4->3->2->1->nil

可以看出来

pre是cur的最前面那位(pre = cur) cur就是当前位的后面链表元素(cur = cur.Next) cur.Next肯定是接pre(cur.Next = pre) 完整代码:
package mainimport "fmt"//链表节点type ListNode struct {    Val  int    Next *ListNode}//反转链表的实现func reversrList(head *ListNode) *ListNode {    cur := head    var pre *ListNode = nil    for cur != nil {        pre,cur,cur.Next = cur,cur.Next,pre //这句话最重要    }    return pre}func main() {    head := new(ListNode)    head.Val = 1    ln2 := new(ListNode)    ln2.Val = 2    ln3 := new(ListNode)    ln3.Val = 3    ln4 := new(ListNode)    ln4.Val = 4    ln5 := new(ListNode)    ln5.Val = 5    head.Next = ln2    ln2.Next = ln3    ln3.Next = ln4    ln4.Next = ln5    pre := reversrList(head)    fmt.Println(pre)}
总结

以上是内存溢出为你收集整理的反转链表的golang实现全部内容,希望文章能够帮你解决反转链表的golang实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存