Sobes.tech
Junior — Middle

Aveți experiență în implementarea și utilizarea listelor înlănțuite în proiecte?

sobes.tech AI

Răspuns de la AI

Da, în proiectele Go se implementează și se utilizează frecvent liste înlănțuite, mai ales atunci când este necesară gestionarea dinamică a colecțiilor cu inserții și ștergeri frecvente.

În biblioteca standard Go există pachetul container/list, care implementează o listă dublu înlănțuită. Exemplu de utilizare:

package main

import (
    "container/list"
    "fmt"
)

func main() {
    l := list.New()

    l.PushBack(1)
    l.PushBack(2)
    l.PushFront(0)

    for e := l.Front(); e != nil; e = e.Next() {
        fmt.Println(e.Value)
    }
}

Dacă doriți să implementați o listă înlănțuită singur, puteți defini structura nodului și metode pentru inserare, ștergere și traversare:

type Node struct {
    value int
    next  *Node
}

type LinkedList struct {
    head *Node
}

func (l *LinkedList) Insert(value int) {
    newNode := &Node{value: value}
    if l.head == nil {
        l.head = newNode
        return
    }
    current := l.head
    for current.next != nil {
        current = current.next
    }
    current.next = newNode
}

func (l *LinkedList) Traverse() {
    current := l.head
    for current != nil {
        fmt.Println(current.value)
        current = current.next
    }
}

Această abordare permite gestionarea flexibilă a elementelor listei, dar în cele mai multe cazuri, pentru confort și fiabilitate, este mai bine să folosiți lista container/list gata făcută.