go语言 链表练习
Posted heroic_zjx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言 链表练习相关的知识,希望对你有一定的参考价值。
package main import "fmt" //定义节点 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 } func main() { var h Node li := []int{2, 4, 3} for _, l := range li { var d Node d.Data = l Insert(&h, &d, l) } var i Node ls := []int{5, 6, 4} for _, s := range ls { var dd Node dd.Data = s Insert(&i, &dd, s) } sum := 0 sum = GetLoc(&h, 3).Data*100 + GetLoc(&h, 2).Data*10 + GetLoc(&h, 1).Data + GetLoc(&i, 3).Data*100 + GetLoc(&i, 2).Data*10 + GetLoc(&i, 1).Data fmt.Println(sum) }
以上是关于go语言 链表练习的主要内容,如果未能解决你的问题,请参考以下文章