Sobes.tech
Junior — Middle

Жобаларда байланышкан тизмектерди ишке ашыруу жана колдонуу боюнча тажрыйбаңыз барбы?

sobes.tech AI

AIден жооп

Ооба, Go долбоорлорунда көбүнчө байланышкан тизмелер ишке ашырылат жана колдонулат, айрыкча коллекциялардын динамикалык башкарылышы жана көптөгөн кошуу жана өчүрүү операциялары талап кылынганда.

Goнун стандарттык китепканасында container/list пакети бар, ал эки тараптуу байланышкан тизмени ишке ашырат. Колдонуу мисалы:

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)
    }
}

Эгер өзүңүз байланышкан тизмени ишке ашыргыңыз келсе, түйүн структурасын жана кошуу, өчүрүү жана өтүү үчүн методдорду аныктай аласыз:

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
    }
}

Бул ыкма тизмедеги элементтерди ийкемдүү башкарууга мүмкүндүк берет, бирок көп учурда даяр container/list колдонуу ыңгайлуу жана ишенимдүү.