In einem Artikel wird erläutert, wie eine umgekehrt verknüpfte Liste in Golang implementiert wird

藏色散人
Freigeben: 2021-07-19 14:37:17
nach vorne
2996 Leute haben es durchsucht

Problem: Umkehren einer einfach verknüpften Liste.

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
Nach dem Login kopieren

Machen wir uns zunächst mit der Datenstruktur der verknüpften Liste vertraut:

Es gibt zwei Elemente im Knoten der verknüpften Liste:

  • value
  • Pointer
type ListNode struct {
    Val  int
    Next *ListNode
}
Nach dem Login kopieren

Next zeigt auf den nächsten Knoten

Diese Frage lautet also tatsächlich: Der Zeiger zeigt auf den vorherigen Knoten. gt ;3->4-& gt; 5

1->2->3->4->511->nil2->-3> ;->4->52->3->4->5->1->nil22->1->nil 3->4->53->4->5->2->1->nil33->2->1-> ;nil4->54->5->3->2->1->nil44->3->2-> ;1->nil55->4->3->2->1->nilpre die Frontperson von ist cur (pre = cur)cur ist das verknüpfte Listenelement hinter der aktuellen Position (cur = cur.Next) cur.Next muss mit pre verbunden sein (cur.Next = pre)
package main

import "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)
}
Nach dem Login kopieren
Sie können sehen, dass
Vollständiger Code: Weitere technische Artikel zum Thema Golang finden Sie in der Tutorial-Kolumne von golang !

Das obige ist der detaillierte Inhalt vonIn einem Artikel wird erläutert, wie eine umgekehrt verknüpfte Liste in Golang implementiert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage