Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang

Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang

WBOY
WBOYasal
2024-01-28 08:01:171002semak imbas

Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang

Golang ialah bahasa pengaturcaraan berprestasi tinggi dengan keupayaan serentak dan pengurusan memori menjadikannya sangat sesuai untuk menulis struktur data yang cekap. Senarai terpaut ialah struktur data biasa Berikut akan memperkenalkan cara menggunakan Golang untuk menulis struktur senarai terpaut yang cekap dan memberikan contoh kod khusus.

Senarai terpaut ialah struktur data linear yang terdiri daripada nod Setiap nod mengandungi nilai dan penunjuk ke nod seterusnya. Berbanding dengan tatasusunan, kelebihan senarai terpaut ialah memasukkan dan memadam elemen adalah lebih cekap kerana tidak perlu memindahkan elemen lain. Bagaimanapun, kecekapan carian senarai terpaut agak rendah kerana ia perlu diakses satu persatu bermula dari nod kepala.

Pertama, kami mentakrifkan struktur nod senarai terpaut, kodnya adalah seperti berikut:

type Node struct {
    value int
    next *Node
}

Dalam struktur senarai terpaut, kami mentakrifkan nilai jenis integer dan penuding ke nod seterusnya. Seterusnya, kami mentakrifkan struktur senarai terpaut, yang mengandungi penunjuk ke nod kepala dan nod ekor.

type LinkedList struct {
    head *Node
    tail *Node
}

Kini kami boleh melaksanakan beberapa operasi asas senarai terpaut, seperti sisipan, pemadaman dan carian. Berikut ialah contoh kod untuk operasi sisipan:

func (list *LinkedList) Insert(value int) {
    newNode := &Node{value: value}
    
    if list.head == nil {
        list.head = newNode
        list.tail = newNode
    } else {
        list.tail.next = newNode
        list.tail = newNode
    }
}

Dalam operasi sisipan, kami mula-mula menentukan sama ada senarai terpaut kosong Jika ia kosong, kedua-dua nod kepala dan nod ekor menghala ke nod baharu. Jika ia tidak kosong, kami menambah nod baharu selepas nod ekor dan menetapkan nod baharu sebagai nod ekor baharu.

Berikut ialah contoh kod untuk operasi pemadaman:

func (list *LinkedList) Remove(value int) {
    if list.head == nil {
        return
    }
    
    if list.head.value == value {
        list.head = list.head.next
        if list.head == nil {
            list.tail = nil
        }
        return
    }
    
    prev := list.head
    current := list.head.next
    
    for current != nil {
        if current.value == value {
            prev.next = current.next
            if current == list.tail {
                list.tail = prev
            }
            return
        }
        
        prev = current
        current = current.next
    }
}

Operasi pemadaman terlebih dahulu menentukan sama ada senarai terpaut kosong dan kembali terus jika ia kosong. Kemudian kita dapati nod yang akan dipadamkan dengan melintasi senarai terpaut, simpan nod pendahulunya sebelum memadamkan nod, dan kemudian arahkan nod pendahulu seterusnya ke nod seterusnya yang akan dipadamkan. Apa yang memerlukan perhatian khusus ialah jika nod yang hendak dipadamkan ialah nod ekor, nod ekor senarai terpaut perlu dikemas kini.

Akhir sekali, mari kita laksanakan operasi carian senarai terpaut:

func (list *LinkedList) Search(value int) bool {
    current := list.head
    
    for current != nil {
        if current.value == value {
            return true
        }
        current = current.next
    }
    
    return false
}

Operasi carian adalah sangat mudah, kita hanya perlu merentasi senarai terpaut dan membandingkan sama ada nilai nod adalah sama dengan nilai sasaran.

Sekarang kami telah melaksanakan operasi asas senarai terpaut, kami boleh menggunakan senarai terpaut melalui contoh kod berikut:

func main() {
    list := LinkedList{}
    list.Insert(1)
    list.Insert(2)
    list.Insert(3)
    
    fmt.Println(list.Search(2)) // Output: true
    
    list.Remove(2)
    fmt.Println(list.Search(2)) // Output: false
}

Di atas ialah contoh kod menggunakan Golang untuk menulis struktur senarai terpaut yang cekap. Senarai terpaut ialah struktur data yang penting, dan mengetahui cara menulis pelaksanaan senarai terpaut yang cekap sangat membantu untuk menyelesaikan masalah praktikal. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Buat struktur senarai terpaut berprestasi tinggi, ditulis dalam Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn