首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言单链表实现方法

Go语言单链表实现方法

作者头像
李海彬
发布2018-03-19 16:47:23
6430
发布2018-03-19 16:47:23
举报
文章被收录于专栏:Golang语言社区Golang语言社区

//////////

//单链表 -- 线性表

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

}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档