go实现linktable库

木刅水 2022-04-08 17:38:35

1.定义链表

//链表节点
type LinkNode struct {
    Next *LinkNode
    Data     interface{} 
}
 
//定义链表
type LinkTable struct {
    Head *LinkNode
    Tail *LinkNode
    Length   uint
}
 

2.初始化链表

func NewNode(data interface{}) *LinkNode {
    return &LinkNode{nil, data}
}
 
//构建一个空表
func NewLTable() *LinkTable {
 
    return &LinkTable{nil, nil, 0}
}
 

3.删除节点

func (this *LinkTable) DelNode(p *LinkNode) bool {
    if this == nil || this.Head == nil {
        return false
    }
    var pre *LinkNode = this.Head
    if pre == p {
        this.Head = nil
        this.Tail = nil
        this.Length--
        return true
    }
    cur := pre.Next
    for cur != nil {
        if cur == p {
            pre.Next = cur.Next
            this.Length--
            return true
        }
        pre = cur
        cur = cur.Next
    }
    return false
 }

4.添加节点


func (this *LinkTable) AddNode(p *LinkNode) bool {
    if this == nil {
        return false
    }
    if this.Head == nil {
        this.Head = p
        this.Tail = p
        this.Length = 1
        return true
    }
    this.Tail.Next = p
    this.Tail = p
    this.Length++
    return true
}

5.上传到gitee仓库,链接如下:gaoruan: 用于存放高软的实验+作业 (gitee.com)

学号:355

...全文
150 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧