Rumah pembangunan bahagian belakang Golang Bagaimana untuk melaksanakan operasi senarai terpaut dalam bahasa Go?

Bagaimana untuk melaksanakan operasi senarai terpaut dalam bahasa Go?

Jun 10, 2023 pm 10:55 PM
pergi bahasa senarai terpaut beroperasi.

Senarai Terpaut ialah struktur data biasa, yang terdiri daripada satu siri nod Setiap nod mengandungi dua atribut utama: medan data (Data) dan medan penunjuk (Seterusnya). Antaranya, medan data digunakan untuk menyimpan data sebenar, dan medan penunjuk menghala ke nod seterusnya. Dengan cara ini, senarai terpaut menyimpan data dalam cara yang fleksibel yang sesuai untuk banyak senario aplikasi yang berbeza.

Dalam bahasa Go, struktur senarai terpaut juga disokong dengan baik. Pustaka standard terbina dalam Go menyediakan pakej bekas/senarai, yang menyediakan pelaksanaan senarai berganda (Double Linked List) yang boleh dipanggil apabila kami menulis kod dalam bahasa Go. Dalam artikel ini, kami akan meneroka cara melaksanakan operasi senarai terpaut menggunakan pakej bekas/senarai.

Penggunaan asas pakej kontena/senarai

Pertama sekali, kita perlu memahami penggunaan asas pakej kontena/senarai. Pakej ini menyediakan struktur Senarai yang mengandungi dua penunjuk ke kepala dan ekor elemen. Pada masa yang sama, struktur ini melaksanakan antara muka standard senarai berganda, termasuk PushBack(), PushFront(), InsertBefore(), InsertAfter(), Remove() dan kaedah lain.

Berikut ialah beberapa contoh operasi senarai terpaut biasa:

  1. Buat objek Senarai
l := list.New()
Salin selepas log masuk
  1. Tambahkan elemen pada penghujung senarai terpaut
l.PushBack("Go")
l.PushBack("Java")
Salin selepas log masuk
  1. Tambahkan elemen pada kepala senarai terpaut
l.PushFront("Python")
Salin selepas log masuk
  1. Sisipkan elemen sebelum elemen yang ditentukan
elem := l.Back()
l.InsertBefore("C++", elem)
Salin selepas log masuk
  1. Pada yang ditentukan Masukkan elemen selepas elemen
l.InsertAfter("JavaScript", elem)
Salin selepas log masuk
  1. Alih keluar elemen yang ditentukan
l.Remove(elem)
Salin selepas log masuk

Operasi senarai terpaut asas ini boleh digunakan secara langsung dalam program kami. Walau bagaimanapun, membangunkan aplikasi praktikal memerlukan lebih banyak operasi senarai terpaut Berikut akan memperkenalkan kaedah pelaksanaan operasi senarai terpaut seperti sisipan, pemadaman, carian dan traversal.

Kendalian sisipan senarai terpaut

Kendalian sisipan senarai terpaut boleh dibahagikan kepada dua situasi berikut:

  1. Sisipkan elemen di kepala senarai terpaut

Untuk memasukkan elemen di kepala senarai terpaut, anda boleh menggunakan kaedah PushFront(). Contohnya adalah seperti berikut:

l.PushFront(1)
l.PushFront(2)
Salin selepas log masuk
  1. Sisipkan elemen di tengah atau di hujung senarai terpaut

Untuk memasukkan elemen di tengah atau di hujung pautan senarai, anda perlu menggunakan kaedah InsertAfter() atau InsertBefore(), Dan berikan kedudukan elemen yang sepadan. Contohnya adalah seperti berikut:

elem := l.Back() // 获取链表尾部元素
l.InsertBefore(99, elem) // 在尾部元素前插入新元素
Salin selepas log masuk

Padam operasi senarai terpaut

Operasi pemadaman senarai terpaut boleh dibahagikan kepada dua situasi berikut:

  1. Padam kepala elemen senarai terpaut

Untuk memadamkan elemen kepala senarai terpaut, anda boleh menggunakan kaedah Remove(). Contohnya adalah seperti berikut:

head := l.Front()
l.Remove(head)
Salin selepas log masuk
  1. Padamkan elemen dalam senarai terpaut

Untuk memadamkan elemen dalam senarai terpaut, anda perlu mencari lokasi elemen, dan kemudian gunakan kaedah Alih Keluar () untuk melaksanakan operasi padam. Contohnya adalah seperti berikut:

// 找到需要删除的元素
target := 2
for e := l.Front(); e != nil; e = e.Next() {
    if e.Value == target {
        l.Remove(e)
        break
    }
}
Salin selepas log masuk

Kendalian carian senarai terpaut

Kendalian carian senarai terpaut selalunya memerlukan merentasi keseluruhan senarai terpaut, jadi kerumitan masa adalah tinggi. Walau bagaimanapun, untuk senarai terpaut berskala kecil, operasi carian adalah sangat pantas.

  1. Cari elemen dalam senarai terpaut

Untuk mencari elemen dalam senarai terpaut, anda perlu melintasi senarai terpaut sehingga elemen ditemui, atau terpaut senarai dilalui. Contohnya adalah seperti berikut:

// 找到需要查找的元素
target := 2
for e := l.Front(); e != nil; e = e.Next() {
    if e.Value == target {
        fmt.Println("Find it!")
        break
    }
}
Salin selepas log masuk
  1. Cari elemen maksimum dalam senarai terpaut

Cari elemen maksimum dalam senarai terpaut Anda juga perlu melintasi senarai terpaut dan rekod nilai maksimum semasa traversal Kod Contoh adalah seperti berikut:

max := 0
for e := l.Front(); e != nil; e = e.Next() {
    if e.Value.(int) > max {
        max = e.Value.(int)
    }
}
fmt.Println("Max value is:", max)
Salin selepas log masuk

Kendalian traversal senarai terpaut

Operasi traversal senarai terpaut adalah agak biasa dan boleh digunakan untuk output, pengubahsuaian , carian dan operasi lain. Apa yang perlu diperhatikan semasa merentasi ialah kita perlu melintasi setiap elemen mengikut susunan elemen dalam senarai terpaut.

  1. Lintas senarai terpaut dari awal hingga akhir

Untuk melintasi senarai terpaut dari awal hingga akhir, anda boleh menggunakan kaedah Front() dan Next(). contoh kod adalah seperti berikut:

for e := l.Front(); e != nil; e = e.Next() {
    fmt.Println(e.Value)
}
Salin selepas log masuk
  1. Lintas senarai terpaut dari hujung ke kepala

Untuk melintasi senarai terpaut dari hujung ke kepala, anda boleh menggunakan kaedah Back() dan Prev() Contoh kod adalah seperti berikut:

for e := l.Back(); e != nil; e = e.Prev() {
    fmt.Println(e.Value)
}
Salin selepas log masuk

Ringkasan

Artikel ini memperkenalkan secara ringkas kaedah pelaksanaan operasi senarai terpaut dalam bahasa Go. Dengan menggunakan pakej bekas/senarai, kami melaksanakan operasi asas seperti memasukkan, memadam, mencari dan melintasi senarai terpaut. Untuk operasi senarai terpaut dalam aplikasi sebenar, kami perlu merangkum dan mengembangkannya lagi mengikut keperluan khusus untuk memenuhi keperluan perniagaan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan operasi senarai terpaut dalam bahasa Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah masalah dengan thread giliran di crawler colly go? Apakah masalah dengan thread giliran di crawler colly go? Apr 02, 2025 pm 02:09 PM

Masalah Threading Giliran di GO Crawler Colly meneroka masalah menggunakan Perpustakaan Colly Crawler dalam bahasa Go, pemaju sering menghadapi masalah dengan benang dan permintaan beratur. � ...

Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Perpustakaan apa yang digunakan untuk operasi nombor terapung di GO? Apr 02, 2025 pm 02:06 PM

Perpustakaan yang digunakan untuk operasi nombor terapung dalam bahasa Go memperkenalkan cara memastikan ketepatannya ...

Bagaimana untuk menyelesaikan masalah yang label struktur tersuai di Goland tidak berkuatkuasa? Bagaimana untuk menyelesaikan masalah yang label struktur tersuai di Goland tidak berkuatkuasa? Apr 02, 2025 pm 12:51 PM

Mengenai masalah tag struktur tersuai di Goland apabila menggunakan Goland untuk pembangunan bahasa Go, anda sering menghadapi beberapa masalah konfigurasi. Salah satu daripada mereka adalah ...

Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Di Go, mengapa rentetan percetakan dengan fungsi println dan rentetan () mempunyai kesan yang berbeza? Apr 02, 2025 pm 02:03 PM

Perbezaan antara percetakan rentetan dalam bahasa Go: perbezaan kesan menggunakan fungsi println dan rentetan () sedang ...

Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper? Kenapa perlu lulus petunjuk apabila menggunakan perpustakaan Go dan Viper? Apr 02, 2025 pm 04:00 PM

GO Pointer Syntax dan menangani masalah dalam penggunaan perpustakaan Viper semasa pengaturcaraan dalam bahasa Go, adalah penting untuk memahami sintaks dan penggunaan petunjuk, terutama dalam ...

Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Perpustakaan mana yang dibangunkan oleh syarikat besar atau disediakan oleh projek sumber terbuka yang terkenal? Apr 02, 2025 pm 04:12 PM

Perpustakaan mana yang dibangunkan oleh syarikat besar atau projek sumber terbuka yang terkenal? Semasa pengaturcaraan di GO, pemaju sering menghadapi beberapa keperluan biasa, ...

GO SLISE SLICE: Mengapa ia tidak melaporkan kesilapan apabila indeks kepingan tunggal 1 memintas? GO SLISE SLICE: Mengapa ia tidak melaporkan kesilapan apabila indeks kepingan tunggal 1 memintas? Apr 02, 2025 pm 02:24 PM

GO LANGUAGE SLISE INDEX: Mengapa kepingan tunggal elemen memintas dari Indeks 1 tanpa ralat? Dalam bahasa Go, kepingan adalah struktur data yang fleksibel yang boleh merujuk kepada bahagian bawah ...

See all articles