Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara memadamkan elemen senarai terpaut menggunakan bahasa Go

Cara memadamkan elemen senarai terpaut menggunakan bahasa Go

PHPz
PHPzasal
2023-04-10 14:21:49669semak imbas

Dalam bahasa Go, memadamkan elemen senarai terpaut ialah operasi asas. Struktur senarai terpaut tidak boleh dimanipulasi secara langsung melalui pengindeksan seperti tatasusunan, jadi anda perlu mencari elemen yang perlu dipadamkan dalam senarai terpaut dan kemudian memadamkannya daripada senarai terpaut.

Artikel ini akan memperkenalkan operasi asas tentang cara memadam elemen senarai terpaut menggunakan bahasa Go.

  1. Tentukan struktur senarai terpaut

Dalam bahasa Go, senarai terpaut boleh dilaksanakan melalui satu siri struktur dan petunjuk. Kami biasanya menggunakan struktur nod untuk mewakili satu elemen dalam senarai terpaut.

taip struct ListNode {

Val  int
Next *ListNode

}

Struktur ini mengandungi dua pembolehubah ahli: Val dan Next. Val ialah nilai sebenar nod dan Seterusnya ialah penunjuk ke nod seterusnya.

  1. Memadamkan elemen dalam senarai terpaut

Memadamkan elemen dalam senarai terpaut boleh dibahagikan kepada tiga langkah. Pertama, kita perlu mencari elemen yang perlu dipadamkan. Kedua, kita perlu mengemas kini penunjuk ke elemen itu untuk menunjuk ke elemen seterusnya. Akhir sekali, kami memadamkan elemen yang perlu dipadamkan daripada senarai terpaut.

func deleteNode(head ListNode, val int) ListNode {

// 如果是删除头节点,直接返回下一个节点作为新的头节点
if head.Val == val {
    return head.Next
}

// 定义两个指针用于遍历链表
pre, cur := head, head.Next
for cur != nil {
    if cur.Val == val {
        // 删除当前节点
        pre.Next = cur.Next
        break
    }
    // 将指针移动到下一个节点
    pre, cur = cur, cur.Next
}

return head

}

Dalam fungsi ini, kami menggunakan dua penunjuk pra dan cur untuk melintasi senarai terpaut. Jika nod yang perlu dipadam ditemui, penunjuk ke nod itu dikemas kini untuk menghala ke nod seterusnya.

  1. Contoh kod lengkap

Berikut ialah contoh kod lengkap, yang merangkumi struktur yang mentakrifkan senarai terpaut dan fungsi untuk memadamkan elemen senarai terpaut.

func deleteNode(head ListNode, val int) ListNode {

// 如果是删除头节点,直接返回下一个节点作为新的头节点
if head.Val == val {
    return head.Next
}

// 定义两个指针用于遍历链表
pre, cur := head, head.Next
for cur != nil {
    if cur.Val == val {
        // 删除当前节点
        pre.Next = cur.Next
        break
    }
    // 将指针移动到下一个节点
    pre, cur = cur, cur.Next
}

return head

}

taip ListNode struct {

Val  int
Next *ListNode

}

func main() {

// 创建一个链表
l1 := &ListNode{1, nil}
l2 := &ListNode{2, nil}
l3 := &ListNode{3, nil}
l4 := &ListNode{4, nil}
l5 := &ListNode{5, nil}
l1.Next = l2
l2.Next = l3
l3.Next = l4
l4.Next = l5

// 删除链表元素
head := deleteNode(l1, 3)

// 打印链表
for head != nil {
    fmt.Println(head.Val)
    head = head.Next
}

}

Dalam contoh di atas, kami telah mencipta senarai terpaut yang mengandungi 5 elemen. Kemudian, kami menggunakan fungsi deleteNode() untuk memadamkan elemen dengan nilai 3 daripada senarai terpaut. Akhir sekali, kami mengulangi keseluruhan senarai terpaut dan mencetak nilai setiap elemen.

  1. Ringkasan
    Melalui penjelasan di atas, kita dapati bahawa senarai terpaut boleh dilaksanakan dalam bahasa Go melalui satu siri struktur dan petunjuk. Operasi asas memadam elemen senarai terpaut boleh dibahagikan kepada tiga langkah: carian, penuding kemas kini dan pemadaman. Saya harap artikel ini dapat membantu anda memahami dan menguasai operasi senarai terpaut dalam bahasa Go.

Atas ialah kandungan terperinci Cara memadamkan elemen senarai terpaut menggunakan bahasa Go. 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