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.