线性表之单链表

package main

//线性表中的链式存储结构
//第一个节点为头节点,并不真实保存数据,头节点基本代表了整个链表 import (
"fmt"
) type Elem int type 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版)的更多相关文章

  1. C语言实现单链表-03版

    在C语言实现单链表-02版中我们只是简单的更新一下链表的组织方式: 它没有更多的更新功能,因此我们这个版本将要完成如下功能: Problem 1,搜索相关节点: 2,前插节点: 3,后追加节点: 4, ...

  2. C语言实现单链表-02版

    我们在C语言实现单链表-01版中实现的链表非常简单: 但是它对于理解单链表是非常有帮助的,至少我就是这样认为的: 简单的不能再简单的东西没那么实用,所以我们接下来要大规模的修改啦: Problem 1 ...

  3. Python数据结构之单链表

    Python数据结构之单链表 单链表有后继结点,无前继结点. 以下实现: 创建单链表 打印单链表 获取单链表的长度 判断单链表是否为空 在单链表后插入数据 获取单链表指定位置的数据 获取单链表指定元素 ...

  4. javascript数据结构之单链表

    下面是用javascript实现的单链表,但是在输出的时候insert方法中存在问题,chrome的console报错说不能读取空的属性,调试了很久都没有通过,先在这里存着,以后再来修改一下. //数 ...

  5. 数据结构之单链表的实现-java

    一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...

  6. 数据结构:单链表结构字符串(python版)添加了三个新功能

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

  7. 数据结构:单链表结构字符串(python版)改进

    此篇文章的replace实现了字符串类的多次匹配,但依然有些不足. 因为python字符串对象为不变对象,所以replace方法并不修改原先的字符串,而是返回修改后的字符串. 而此字符串对象时用单链表 ...

  8. 数据结构:单链表结构字符串(python版)

    #!/urs/bin/env python # -*- coding:utf-8 -*- #异常类 class stringTypeError(TypeError): pass #节点类 class ...

  9. golang数据结构之单链表

    实现单链表的增删查改. 目录如下: singleLink.go package link import ( "fmt" ) //HeroNode 链表节点 type HeroNod ...

随机推荐

  1. OFDM留空中央直流子载波目的及原理

    目的: 降低峰均比! 原理: IDFT公式: 直流分量k接近0,公式近似于对X(k)进行累加,因此直流分量会产生较大的信号能量,造成严重的峰均比. 详细内容可参考: https://dwz.cn/Zl ...

  2. CPU内部结构图

      原文地址:http://blog.csdn.net/jiuyueguang/article/details/9350793

  3. HDU 1512 Monkey King(左偏堆)

    爱争吵的猴子 ★★☆ 输入文件:monkeyk.in 输出文件:monkeyk.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述] 在一个森林里,住着N只好斗的猴子.开始,他们各 ...

  4. linux技巧----查找某个正在执行的脚本

    如果在机器上发现有执行的脚本,却不知道在哪,可以这样找 例如 # netstat -ltnp Active Internet connections (only servers) Proto Recv ...

  5. python3连接redis数据库

    1.python想操作redis,需要安装第三方模块(我是在windows下进行操作的) pip install redis 2.连接数据库 #coding:utf-8 import redis r  ...

  6. django基础教程(一)

    Django是一个开源的网站框架,mvc模式.提供了开发网站经常用的模块 优势:1.数据库 2.用正则匹配网址,传到对应的函数 3.后台 4.模板系统,与样式分开 5,缓存 Diango的组成:1.u ...

  7. C/C++程序基础-C++与C有什么不同

    1:C和C++的联系和区别? 答:C是一个结构化语言,它的重点在于算法和数据结构.对于语言本身而言,C是C++的子集.C程序的设计首先要考虑的是如何通过一个过程,对输入进行运算处理,得到输出.对于C+ ...

  8. Linux设备驱动程序 之 Makefile

    典型的模块Makefile如下所示: ifneq ($(KERNELRELEASE),) obj-m := hello.o else KERNELDIR ?=/lib/modules/$(shell ...

  9. JVM内存管理 + GC垃圾回收机制

    2.JVM内存管理 JVM将内存划分为6个部分:PC寄存器(也叫程序计数器).虚拟机栈.堆.方法区.运行时常量池.本地方法栈 PC寄存器(程序计数器):用于记录当前线程运行时的位置,每一个线程都有一个 ...

  10. Flink初探wordCout

    知识点 Flink介绍 1.无界数据-->数据不断产生 2.有界数据-->最终不再改变的数据 3.有界数据集是无界数据集的一个特例 4.有界数据集在flink内部是以一种终态数据集进行处理 ...