数据结构之单链表(golang版)
生活随笔
收集整理的这篇文章主要介绍了
数据结构之单链表(golang版)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
线性表之单链表
package main//线性表中的链式存储结构 //第一个节点为头节点,并不真实保存数据,头节点基本代表了整个链表import ("fmt" )type Elem inttype LinkNode struct {Data ElemNext *LinkNode }//生成头节点 func New() *LinkNode {//下面的data可以用来表示链表的长度return &LinkNode{0, nil} }//在链表的第i个位置前插入一个元素e,复杂度为o(n) func (head *LinkNode) Insert(i int, e Elem) bool {p := headj := 1for nil != p && j < i {p = p.Nextj++}if nil == p || j > i {fmt.Println("pls check i:", i)return false}s := &LinkNode{Data: e}s.Next = p.Nextp.Next = sreturn true }//遍历链表 func (head *LinkNode) Traverse() {point := head.Nextfor nil != point {fmt.Println(point.Data)point = point.Next}fmt.Println("--------done----------") }//删除链表中第i个节点,复杂度为o(n) func (head *LinkNode) Delete(i int) bool {p := headj := 1for (nil != p && j < i) {p = p.Nextj++}if nil == p || j > i {fmt.Println("pls check i:", i)return false}p.Next = p.Next.Nextreturn true }// 获取链表中的第i个元素,复杂度为o(n) func (head *LinkNode) Get(i int) Elem {p := head.Nextfor j:= 1; j< i ;j++ {if nil == p {//表示返回错误return -100001}p=p.Next}return p.Data }func main() {linkedList := New()linkedList.Insert(1, 9)linkedList.Insert(1, 99)linkedList.Insert(1, 999)linkedList.Insert(1, 9999)linkedList.Insert(1, 99999)linkedList.Insert(1, 999999)linkedList.Traverse()linkedList.Delete(4)linkedList.Traverse()e := linkedList.Get(4)fmt.Println(e) }转载于:https://www.cnblogs.com/nyist-xsk/p/11351893.html
总结
以上是生活随笔为你收集整理的数据结构之单链表(golang版)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: golang break label 与
- 下一篇: golang实现二叉搜索树