在Go语言中,我们可以使用结构体来表示链表的节点,并使用指针来连接这些节点。
下面是一个简单的链表实现:
package main
import "fmt"
type Node struct {
data int
next *Node
}
type LinkedList struct {
head *Node
}
// 在链表尾部插入一个节点
func (ll *LinkedList) Append(data int) {
newNode := &Node{data: data}
if ll.head == nil {
ll.head = newNode
return
}
lastNode := ll.head
for lastNode.next != nil {
lastNode = lastNode.next
}
lastNode.next = newNode
}
// 在链表头部插入一个节点
func (ll *LinkedList) Prepend(data int) {
newNode := &Node{data: data}
newNode.next = ll.head
ll.head = newNode
}
// 删除一个节点
func (ll *LinkedList) Delete(data int) {
if ll.head == nil {
return
}
if ll.head.data == data {
ll.head = ll.head.next
return
}
prevNode := ll.head
for prevNode.next != nil {
if prevNode.next.data == data {
prevNode.next = prevNode.next.next
return
}
prevNode = prevNode.next
}
}
// 打印链表
func (ll *LinkedList) Print() {
current := ll.head
for current != nil {
fmt.Printf("%d ", current.data)
current = current.next
}
fmt.Println()
}
func main() {
ll := LinkedList{}
ll.Append(1)
ll.Append(2)
ll.Append(3)
ll.Print() // 1 2 3
ll.Prepend(0)
ll.Print() // 0 1 2 3
ll.Delete(1)
ll.Print() // 0 2 3
}
通过使用这个简单的链表实现,我们可以在Go语言中轻松地操作链表数据结构。