Bagaimana untuk membalikkan senarai pautan menggunakan Golang

PHPz
Lepaskan: 2023-04-25 14:35:32
asal
642 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari, terutamanya yang cemerlang dalam memproses struktur dan algoritma data. Artikel ini akan memperkenalkan kaedah pelaksanaan menggunakan Golang untuk membalikkan senarai terpaut.

Senarai terpaut ialah struktur data biasa yang terdiri daripada satu siri nod, setiap nod mengandungi nilai dan penunjuk ke nod seterusnya. Tidak seperti tatasusunan, senarai terpaut tidak memerlukan saiz yang telah ditetapkan dan boleh dikembangkan dan dikurangkan secara dinamik. Membalikkan senarai terpaut ialah masalah algoritma klasik Matlamat masalah ini adalah untuk membalikkan senarai terpaut supaya susunan senarai terpaut diterbalikkan, iaitu, nod ekor asal menjadi nod kepala, dan nod kepala asal menjadi. nod ekor.

Idea algoritma untuk membalikkan senarai terpaut

Idea algoritma untuk membalikkan senarai terpaut adalah sangat mudah Anda hanya perlu melintasi senarai terpaut, dan kemudian arahkan penunjuk setiap nod ke nod sebelumnya. Langkah-langkahnya adalah seperti berikut:

  1. Arahkan penunjuk nod semasa ke nod sebelumnya; nod;
  2. Alihkan penunjuk dan gunakan nod seterusnya sebagai nod semasa;
  3. Apabila membalikkan senarai terpaut, anda perlu memberi perhatian kepada perkara berikut:
Jika senarai terpaut kosong, senarai terpaut kosong akan dikembalikan terus;

Jika terdapat hanya satu Nod senarai terpaut, kembalikan nod secara terus
  1. Jika senarai terpaut mempunyai berbilang nod, anda perlu menyimpan nod kepala dan nod ekor senarai terpaut asal. Nod kepala terbalik ialah nod ekor senarai terpaut asal, dan nod ekor terbalik ialah nod kepala senarai terpaut asal.
  2. Golang melaksanakan senarai terpaut terbalik
  3. Sintaks Golang adalah ringkas dan jelas, menjadikannya sangat mudah untuk melaksanakan algoritma senarai terpaut terbalik. Berikut ialah contoh kod untuk menggunakan Golang untuk melaksanakan senarai terpaut terbalik:

Dalam kod di atas, kami menggunakan struktur Nod untuk mewakili nod senarai terpaut. Struktur mengandungi nilai dan penunjuk ke nod seterusnya. Fungsi ReverseList menerima nod kepala, kemudian melintasi senarai terpaut dalam urutan, menghalakan penuding setiap nod ke nod sebelumnya, dan akhirnya mengembalikan nod kepala terbalik.

Pengujian senarai terpaut terbalik
type Node struct {
    Value int
    Next *Node
}

func ReverseList(head *Node) *Node {
    if head == nil {
        return nil
    }

    var prev *Node
    curr, next := head, head

    for curr != nil {
        next = curr.Next
        curr.Next = prev
        prev = curr
        curr = next
    }

    return prev
}
Salin selepas log masuk

Kami boleh menulis fungsi ujian untuk mengesahkan ketepatan senarai terpaut terbalik. Kod ujian adalah seperti berikut:

Kod ujian mencipta senarai terpaut yang mengandungi tiga nod dan mengesahkan sama ada keputusan selepas membalikkan senarai terpaut adalah betul.

Kesimpulan
func TestReverseList(t *testing.T) {
    node1 := &Node{Value: 1, Next: nil}
    node2 := &Node{Value: 2, Next: nil}
    node3 := &Node{Value: 3, Next: nil}
    node1.Next = node2
    node2.Next = node3

    t.Logf("Original list: %v -> %v -> %v\n", node1.Value, node2.Value, node3.Value)

    head := ReverseList(node1)

    var values []int
    curr := head
    for curr != nil {
        values = append(values, curr.Value)
        curr = curr.Next
    }

    if !reflect.DeepEqual(values, []int{3, 2, 1}) {
        t.Errorf("ReverseList failed. Got %v, expected [3 2 1].", values)
    }

    t.Logf("Reversed list: %v -> %v -> %v\n", values[0], values[1], values[2])
}
Salin selepas log masuk

Golang ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari yang boleh mengendalikan masalah struktur data dan algoritma dengan mudah. Artikel ini memperkenalkan idea algoritma dan contoh kod menggunakan Golang untuk melaksanakan senarai terpaut terbalik dan menyediakan kod ujian yang sepadan.

Menterbalikkan senarai terpaut ialah masalah algoritma klasik Menguasai penyelesaian kepada masalah ini bukan sahaja dapat meningkatkan kemahiran pengaturcaraan, tetapi juga membantu memahami sifat algoritma struktur data.

Atas ialah kandungan terperinci Bagaimana untuk membalikkan senarai pautan menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!