线性表之单链表

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版)相关推荐

  1. 数据结构:单链表中在P结点前插入S结点

    标题:数据结构:单链表中在P结点前插入S结点 在数据结构的习题中偶然看到了一个题目 已知在单链表中P不是首元结点也不是尾元结点,在P结点前插入S结点 #include<stdio.h> # ...

  2. 基本的数据结构:单链表(Singly Linked List)

    一.基本的数据结构:单链表(Singly Linked List) 什么是单链表? 下面是百度百科给出的官方解释: 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表 ...

  3. Java数据结构——用单链表编写一个简易通讯录

    Java数据结构--用单链表编写一个简易通讯录 1.定义线性表的抽象数据类型(接口) 2.定义单链表的结点Node类 3.定义数据域中的联系人Person类 4.编写顺序表(类) 5.编写测试程序(m ...

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

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

  5. 【 数据结构 】单链表的实现 - 详解(C语言版)

    目录 前言: 顺序表的缺陷: 单链表:(Single Linked List) 概念及结构: 单链表的实现: 头文件:SList.h malloc函数: free函数: 具体函数的实现:SList.c ...

  6. 【数据结构】单链表的实现

    文章目录 1. 链表 1.1 链表的概念及结构 1.2 链表的分类 1.3 链表的实现 1. 4 结尾 1. 链表 之前我们实现了顺序表,接下来来学习链表,并且理解顺序表和链表的区别 1.1 链表的概 ...

  7. 数据结构:单链表——带头结点与不带头结点步骤详解

    单链表:带头结点与不带头结点详解 在本人的另一篇文章中,通过java实现了带头结点和不带头结点的单链表,有兴趣的小伙伴可以去看下数据结构(一):链表(Linked List) 这两天回顾下链表的知识, ...

  8. 【C数据结构】单链表的实现以及链表和顺序表的优缺点

    文章目录 一.链表和顺序表的相辅相成 二.认识链表的最简单结构(单链表) 1.单链表的结构: 2.单链表的简单操作实现: (1).提前准备(头文件和测试源文件) (2).单链表的头插.尾插与创建一个新 ...

  9. 大家一起学数据结构之单链表

    最近工作上得一些感触,要想不当码农学好数据结构是必须滴. 好了,话不多说,下面开始第一个内容 单链表 一.先来介绍下单链表得结构吧 大概就这样了,别嫌丑. 单链表有带头结点得和不带头结点得,其中每个节 ...

最新文章

  1. 数据标准化(归一化)
  2. CTO说了,delete后不加limit,直接滚蛋!
  3. 苹果CMS V10 播放记录_苹果cms整合dplayer播放器增加记忆+P2P播放+自动下一集
  4. spring 查找实现类_69道Spring面试题和答案
  5. python学习:删除空白
  6. android图片添加多行文字,Android使用SpannableString实现多行文字开头放置标签图案...
  7. Quartus II下进行SignalTap仿真
  8. k2p拆机ttl刷breed_最新k2p 22.10.3.42;22.10.3.38和k2 22.6.532.231拆机ttl刷breed图文教程
  9. 家用NAS进阶折腾之旅—常见NAS系统介绍和一些体会以及QNAP 威联通 TS-563 NAS使用感受
  10. 建立数据地图,盘活数据资产!
  11. 亲戚关系关系算法java程序_并查集1——查找亲戚关系
  12. 4种JavaScript中获取HTML元素的方式
  13. java delete()_Java File delete()用法及代码示例
  14. jQuery ajax 文件下载
  15. 如何管理一个外包团队小总结
  16. CSS3 vertical-align属性解决图片留白问题
  17. crypto buuctf 凯撒?替换?呵呵!
  18. aws mysql 多区_Amazon RDS 多可用区部署
  19. 原来是这么做的,在抖音解说电影,6个月赚了40w?
  20. 每日一题 LeetCode909. 蛇梯棋 java题解

热门文章

  1. 应用DIV+CSS编码时容易犯的一些错误
  2. 4循环队列的顺序表示中,为什么要空一个位置?
  3. 关于枚举概念的理解以及存在意义
  4. 哪种Python IDE最适合你?这里有一份优缺点列表
  5. NLP技术路线详解:这是从数学到算法的艺术
  6. PyCharm常用快捷键大全
  7. Linux系统基本命令之vim编辑器的使用
  8. SpringBoot 中发布ApplicationEventPublisher,监听ApplicationEvent 异步操作
  9. 025_Jedis集群
  10. debian linux u盘安装,使用U盘安装Debian系统图文教程