Reka bentuk dan pelaksanaan struktur data senarai terpaut di Golang
Pengenalan:
Senarai terpaut ialah struktur data biasa yang digunakan untuk menyimpan satu siri nod. Setiap nod mengandungi data dan penunjuk ke nod seterusnya. Di Golang, kita boleh melaksanakan senarai terpaut dengan menggunakan struktur dan penunjuk.
type Node struct { data interface{} // 存储数据 next *Node // 指向下一个节点的指针 } type LinkedList struct { head *Node // 链表头节点的指针 }
func NewLinkedList() *LinkedList { return &LinkedList{} }
next
ke nod baharu. next
指针指向新节点。func (list *LinkedList) Insert(data interface{}) { newNode := &Node{data: data} // 创建新节点 if list.head == nil { // 链表为空 list.head = newNode // 直接将新节点设为头节点 } else { current := list.head for current.next != nil { current = current.next // 找到链表的最后一个节点 } current.next = newNode // 将新节点链接到最后一个节点的next指针 } }
next
指针设置为被删除节点的next
func (list *LinkedList) Delete(data interface{}) { if list.head == nil { return // 链表为空,无需删除 } if list.head.data == data { // 头节点需要删除 list.head = list.head.next return } current := list.head for current.next != nil { if current.next.data == data { // 找到要删除节点的前一个节点 current.next = current.next.next return } current = current.next } }
next
nya kepada penuding next
nod yang dipadamkan. func (list *LinkedList) Traverse() { if list.head == nil { return // 链表为空 } current := list.head for current != nil { fmt.Println(current.data) current = current.next } }
func main() { list := NewLinkedList() // 创建一个新链表 list.Insert(1) // 插入节点1 list.Insert(2) // 插入节点2 list.Insert(3) // 插入节点3 list.Traverse() // 遍历链表,输出: 1 2 3 list.Delete(2) // 删除节点2 list.Traverse() // 遍历链表,输出: 1 3 }
Contoh penggunaan senarai terpaut
Atas ialah kandungan terperinci Mereka bentuk dan melaksanakan struktur data senarai terpaut di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!