本文实例讲述了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语言程序设计有所帮助。
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
Go打包二进制文件的实现
背景众所周知,go语言可打包成目标平台二进制文件是其一大优势,如此go项目在服务器不需要配置go环境和依赖就可跑起来。操作需求:打包部署到centos7笔者打包...
[阅读全文]
-
-
-
-
golang语言编码规范的实现
本规范旨在为日常go项目开发提供一个代码的规范指导,方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 ...
[阅读全文]
-
-
-
网友评论