Go语言单链表实现方法
作者:OSC首席键客 发布时间:2024-02-14 15:46:45
标签:Go语言,单链表
本文实例讲述了Go语言单链表实现方法。分享给大家供大家参考。具体如下:
1. singlechain.go代码如下:
//////////
//单链表 -- 线性表
package singlechain
//定义节点
type Node struct {
Data int
Next *Node
}
/*
* 返回第一个节点
* h 头结点
*/
func GetFirst(h *Node) *Node {
if h.Next == nil {
return nil
}
return h.Next
}
/*
* 返回最后一个节点
* h 头结点
*/
func GetLast(h *Node) *Node {
if h.Next == nil {
return nil
}
i := h
for i.Next != nil {
i = i.Next
if i.Next == nil {
return i
}
}
return nil
}
//取长度
func GetLength(h *Node) int {
var i int = 0
n := h
for n.Next != nil {
i++
n = n.Next
}
return i
}
//插入一个节点
//h: 头结点
//d:要插入的节点
//p:要插入的位置
func Insert(h, d *Node, p int) bool {
if h.Next == nil {
h.Next = d
return true
}
i := 0
n := h
for n.Next != nil {
i++
if i == p {
if n.Next.Next == nil {
n.Next = d
return true
} else {
d.Next = n.Next
n.Next = d.Next
return true
}
}
n = n.Next
if n.Next == nil {
n.Next = d
return true
}
}
return false
}
//取出指定节点
func GetLoc(h *Node, p int) *Node {
if p < 0 || p > GetLength(h) {
return nil
}
var i int = 0
n := h
for n.Next != nil {
i++
n = n.Next
if i == p {
return n
}
}
return nil
}
2. main.go代码如下:
package main
import "fmt"
import "list/singlechain"
func main() {
//初始化一个头结点
var h singlechain.Node
//往链表插入10个元素
for i := 1; i <= 10; i++ {
var d singlechain.Node
d.Data = i
singlechain.Insert(&h, &d, i)
fmt.Println(singlechain.GetLoc(&h, i))
}
fmt.Println(singlechain.GetLength(&h))
fmt.Println(singlechain.GetFirst(&h))
fmt.Println(singlechain.GetLast(&h))
fmt.Println(singlechain.GetLoc(&h, 6))
}
希望本文所述对大家的Go语言程序设计有所帮助。


猜你喜欢
- 乍一听有点蒙,之前用ng和react时也写过类似的功能,但是很顺利(所以忘记具体细节了)。jquery为啥会不行呢?看了一下具体场景,发现原
- 记录日志是我们程序中必不可少的一个功能,但是日志文件如果没有合理的管理,时间长了几百兆的日志文件就很难分析了(都不想打开看),但是又不可能经
- temp.html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti
- 下面是例子分析表A记录如下: aID aNum
- JavaScript定义函数的三种实现方法【1】正常方法function print(msg){ document.write(
- declare @id  
- 如何在全局挂载对象和方法1.官方的说明Vue3.x已经不支持直接Vue.prototype.$http = () => {}这种方式来
- 使用命令:os.system('python file_name.py')解释:os.system是执行当前的系统命令1、拿
- 之前在懒懒分会上分享的一点关于border画小图的内容, 完整的ppt在这里.原理css盒模型一个盒子包括: margin+border+p
- 前言docopt 是一个开源的库,代码地址:https://github.com/docopt/docopt。它在 README 中就已经做
- 这篇文章主要介绍了Python 异步协程函数原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 我的电脑环境是使用.net framework4.5.1,如果在调试过程中调不通请注意我用的是Visual studion 2017,pyt
- 不好意思,标题比较啰嗦,因为这次的流水账确实属于一个比较细节的小东西,下面详细讲:1需求最近在使用electron-vue 开发一个跨平台的
- 项目介绍go-admin 是一个中后台管理系统,基于(gin, gorm, Casbin, Vue, Element UI)实现。主要目的是
- 1) 使用字典dict()循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该
- 假设我们有这样一种数据:data = [ ("apple&quo
- 之前写一个 Demo里面 有些东西要使用d3实现一些效果 但是在很多论坛找资源都找不到可以在Vue里面使用D3.js的方法,npm 上面的D
- 服务器响应HTTP的类型ContentType大全,使用方法:<% Response.ContentType =&
- vue配置element-ui遇到的坑注意:本文章参照element-ui官方文档,快速上手部分,的部分教程步骤1.npm安装npm i e
- For 循环可以遍历字符串,也可以遍历列表# for 循环# 语法特点:遍历操作,依次取集合容器中的几个值# for 临时变量