当前位置: 代码迷 >> 综合 >> golang链表操作
  详细解决方案

golang链表操作

热度:28   发布时间:2024-02-19 10:16:23.0

因为学过c,知道c的牛逼之处,后来学了go语言,看里面有了指针的概念,所以就套用c中指针的用法,写个简单的链表。

package mainimport "fmt"
import "os"// 节点
type Node struct{data interface{}prev *Nodenext *Node
}// 链表
type List struct{size uint64head *Nodetail *Node
}// 初始化
func initList()(list *List){list=new(List)list.size=0list.head=nillist.tail=nilreturn
}// 尾插法
func (list *List) Insert(data interface{}){node:=&Node{data:data}if list.size==0 {list.head=nodelist.tail=nodenode.prev=nilnode.next=nil} else {node.prev=list.tailnode.next=nillist.tail.next=nodelist.tail=node}list.size++
}// 头插法
func (list *List) InserHead(data interface{}){node:=&Node{data:data,prev:nil,next:nil}if list.size==0{// 无节点list.head=nodelist.tail=node}else{// 插入到头部node.next=list.headlist.head.prev=nodelist.head=node}list.size++
}// 遍历
func (list *List) Print(){if list.size<=0 {fmt.Println("linklist is null")os.Exit(3)}var p *Node=list.headfor p!=nil {// %v打印任意类型fmt.Printf("%v ",p.data)p=p.next}
}func main(){list:=initList()list.Insert(23)list.Insert(45)list.Insert(89)list.InserHead(66)list.InsertHead("hello world")list.Print()
}