重温一遍数据结构之单链表(golang版)

重温一遍数据结构之单链表(golang版),第1张

概述说明 上一篇说的是线性表中的顺序存储结构,他的读取复杂度虽然是o(1),但是它的缺点也很明显,插入和删除需要移动很多元素,而且需要分配一块连续的内存区域 线性表之单链表 单链表在一定程度上解决了一部分上面的问题,而且也不要一大块连续的内存区域,代码如下 package main//线性表中的链式存储结构//第一个节点为头节点,并不真实保存数据,头节点基本代表了整个链表import ( 说明

上一篇说的是线性表中的顺序存储结构,他的读取复杂度虽然是o(1),但是它的缺点也很明显,插入和删除需要移动很多元素,而且需要分配一块连续的内存区域

线性表之单链表

单链表在一定程度上解决了一部分上面的问题,而且也不要一大块连续的内存区域,代码如下

package main//线性表中的链式存储结构//第一个节点为头节点,并不真实保存数据,头节点基本代表了整个链表import (    "fmt")type Elem inttype linkNode struct {    Data Elem    Next *linkNode}//生成头节点func New() *linkNode {    //下面的data可以用来表示链表的长度    return &linkNode{0,nil}}//在链表的第i个位置前插入一个元素e,复杂度为o(n)func (head *linkNode) Insert(i int,e Elem) bool {    p := head    j := 1    for nil != p && j < i {        p = p.Next        j++    }    if nil == p || j > i {        fmt.Println("pls check i:",i)        return false    }    s := &linkNode{Data: e}    s.Next = p.Next    p.Next = s    return true}//遍历链表func (head *linkNode) Traverse() {    point := head.Next    for nil != point {        fmt.Println(point.Data)        point = point.Next    }    fmt.Println("--------done----------")}//删除链表中第i个节点,复杂度为o(n)func (head *linkNode) Delete(i int) bool  {    p := head    j := 1    for (nil != p && j < i) {        p = p.Next        j++    }    if nil == p || j > i {        fmt.Println("pls check i:",i)        return false    }    p.Next = p.Next.Next    return true}// 获取链表中的第i个元素,复杂度为o(n)func (head *linkNode) Get(i int) Elem  {    p := head.Next    for 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)}
总结

以上是内存溢出为你收集整理的重温一遍数据结构之单链表(golang版)全部内容,希望文章能够帮你解决重温一遍数据结构之单链表(golang版)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1273215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存