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 колдонуу ыңгайлуу жана ишенимдүү.