🔧 Programmierung 🕛 vor 2 Jahren 2 Min Lesezeit
0

Reverse a linked list in go

↗ Quelle (dev.to)
🗣️ Stimme:

This is a favorite question to give to new developers. Pretty simple if you have had a decent data structures class.



Reverse a single linked list.



For the implementation, I have chosen to make the linked list a generic type.




CODE
type Node[T any] struct {
Data T
Next *Node[T]
}

type LinkedList[T any] struct {
Head *Node[T]
}

func (ll *LinkedList[T]) Append(data T) {
newNode := &Node[T]{Data: data, Next: nil}

if ll.Head == nil {
ll.Head = newNode
return
}

current := ll.Head
for current.Next != nil {
current = current.Next
}
current.Next = newNode
}






And for the reverse function, it's done with a single pass by recognizing that all we need to do is maintain a pointer to the previous node, then set a given node's 'next' to the previous.



When we reach the end, then we know the current node is the new 'head' of the list.




CODE
func (ll *LinkedList[T]) ReverseLinkedList() {
var prev *Node[T] = nil
var ptr *Node[T] = ll.Head
for ptr != nil {
var next *Node[T] = ptr.Next
ptr.Next = prev
prev = ptr
if next == nil {
ll.Head = ptr
}
ptr = next
}
}






Have we missed a boundary condition? What complications are added if the list is now a doubly linked list? Let me know in the comments.



Thanks!



The code for this post and all posts in this series can be found here

Vollständiger Original-Artikel
Den kompletten Beitrag mit allen Details direkt auf dev.to lesen.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
6 Quellen
CVE-2022-44255 | TOTOLINK LR350 9.3.5u.6369_B20220309 buffer overflow (EUVD-2022-47204)
2 Quellen
CVE-2026-68426 | Linux Kernel up to 6.18.41/7.1.5/7.2-rc3 xfrm validate_xmit_skb_list use after free (Nessus ID 346426)
1 Quelle
Windows 11 Probleme mit gültiger Domänenanmeldung nach September-Update [Workaround]
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Reverse a linked list in go

Thematisch verwandte Begriffe: Reverse, linked, list · 6 Treffer

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...