线性表之单链表

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. 题解 [CF961G] Partitions

    题面 解析 首先我们观察这个定义, 可以发现每个元素在统计答案时是平等的, 也就是单个元素的权值对答案没有特别的影响. 设元素权值为\(w[i]\), 那么我们就可以知道答案是\(\sum_{i=1} ...

  2. OFDM发端硬件实现原理图

    OFDM时域削峰法的详细说明可参考:https://www.cnblogs.com/achangchang/p/11037498.html

  3. 7.13 T2 Shit 题(shit)

    [题目描述] 某一天,小

  4. ARTS打卡计划第十五周

    Algorithms: https://leetcode-cn.com/problems/single-number/submissions/ Review: “What Makes a Good D ...

  5. springMVC课程笔记(二)springMVC组件配置

    1.springMVC的DispatcherServlet前段控制器配置,如下图所示在web.xml中配置如下内容: 2.在spring配置文件中,配置处理器适配器HandlerAdapter和映射器 ...

  6. nginx安装(windows下)及配置

    1. 正向代理和反向代理 正向代理是一个位于客户端[用户A]和原始服务器[服务器B]之间的服务器[代理服务器Z],为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后 ...

  7. jenkins 基于角色的权限管理

    如何给不同的用户分配不同的项目权限呢,今天来介绍这个 1 (全局安全设置)启用角色->2新建用户->3新建jenkins 全局角色 builder  并分配如下图3中所示权限(并分配Ove ...

  8. SpringMVC整合Springfox-Swagger

    https://www.jianshu.com/p/ab10860945c3 验证通过 关于Swagger的简介就不占篇幅了... 本文使用的Springfox-Swagger版本为2.8.0 要整合 ...

  9. 【译】优雅的停止docker容器

    1. 介绍 Docker的大部分重点是在隔离的容器中打包和运行应用程序的过程.有无数的教程说明了如何在Docker容器中运行应用程序,但是很少有教程讨论如何正确停止容器化的应用程序.这似乎是一个愚蠢的 ...

  10. 使用AOP思想封装JDBC

    看代码 package learning.aop2; import org.springframework.stereotype.Component; import java.sql.SQLExcep ...