欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之单链表(golang版)

发布时间:2025/4/16 编程问答 16 豆豆
生活随笔 收集整理的这篇文章主要介绍了 数据结构之单链表(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版)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。