下面是详细的攻略:
单链表简介
单链表是一种基础的数据结构,由若干个节点组成,每个节点包含数据和指向下一个节点的指针。最后一个节点指向空。单链表的优点是插入和删除操作非常方便,但查找效率较低。在Golang中,使用结构体和指针实现单链表比较方便。
实现单链表的代码
下面是实现单链表的示例代码,具体实现如下:
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func (l *ListNode) Array() []int {
arr := []int{}
for l != nil {
arr = append(arr, l.Val)
l = l.Next
}
return arr
}
func NewList(vals []int) *ListNode {
var next *ListNode
for i:=len(vals)-1; i>=0; i-- {
node := &ListNode{Val:vals[i], Next:next}
next = node
}
return next
}
func main() {
list := NewList([]int{1,2,3,4,5})
fmt.Println(list.Array())
}
代码解释
该代码主要包含两个部分:定义数据结构和实现方法。
定义单链表结构
在上面的代码中,我们首先定义了一个ListNode结构体,包含一个整型Val和一个指向下一个节点的指针Next。Next指针的类型是*ListNode,表示该指针指向了一个ListNode类型的变量。
实现方法
NewList()
NewList()函数创建一个新的链表。它接受一个整型切片作为参数,从切片的最后一个元素开始遍历,并从后向前逐个创建ListNode节点,最后返回整个链表的起始节点。
Array()
Array()函数将链表节点的值按顺序添加到一个整型切片中,并返回该切片。
示例说明
示例1:创建链表
list1 := NewList([]int{1,2,3,4,5})
该示例中,我们使用NewList()函数创建了一个新链表,并将值[1,2,3,4,5]作为参数传入。函数会从后向前遍历切片中的元素,并逐个创建新的链表节点,最后返回链表的起始节点。
示例2:将链表节点的值转换为切片
list2 := NewList([]int{1,2,3,4,5})
arr := list2.Array()
该示例中,我们首先创建了一个新的链表list2,然后通过调用链表节点的Array()方法,将所有节点的值按照从前到后的顺序添加到一个整型切片arr中,并输出该切片。输出结果应该为[1, 2, 3, 4, 5]。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Golang实现单链表的示例代码 - Python技术站