Go語言單鏈表實現方法
阿新 • • 發佈:2022-05-04
本文例項講述了Go語言單鏈表實現方法。分享給大家供大家參考。具體如下:
1. singlechain.go程式碼如下:
////////// //單鏈表 -- 線性表 package singlechain //定義節點 type Node struct { Data int Next *Node } /* * 返回第一個節點 * h 頭結點 */ func GetFirst(h *Node) *Node { if h.Next == nil { return nil } return h.Next } /* * 返回最後一個節點 * h 頭結點 */ func GetLast(h *Node) *Node { if h.Next == nil { return nil } i := h for i.Next != nil { i = i.Next if i.Next == nil { return i } } return nil } //取長度 func GetLength(h *Node) int { var i int = 0 n := h for n.Next != nil { i++ n = n.Next } return i } //插入一個節點 //h: 頭結點 //d:要插入的節點 //p:要插入的位置 func Insert(h, d *Node, p int) bool { if h.Next == nil { h.Next = d return true } i := 0 n := h for n.Next != nil { i++ if i == p { if n.Next.Next == nil { n.Next = d return true } else { d.Next = n.Next n.Next = d.Next return true } } n = n.Next if n.Next == nil { n.Next = d return true } } return false } //取出指定節點 func GetLoc(h *Node, p int) *Node { if p < 0 || p > GetLength(h) { return nil } var i int = 0 n := h for n.Next != nil { i++ n = n.Next if i == p { return n } } return nil } 2. main.go程式碼如下: 複製程式碼程式碼如下: package main import "fmt" import "list/singlechain" func main() { //初始化一個頭結點 var h singlechain.Node //往連結串列插入10個元素 for i := 1; i <= 10; i++ { var d singlechain.Node d.Data = i singlechain.Insert(&h, &d, i) fmt.Println(singlechain.GetLoc(&h, i)) } fmt.Println(singlechain.GetLength(&h)) fmt.Println(singlechain.GetFirst(&h)) fmt.Println(singlechain.GetLast(&h)) fmt.Println(singlechain.GetLoc(&h, 6)) }