571
社区成员
发帖
与我相关
我的任务
分享
//链表节点
type LinkNode struct {
Next *LinkNode
Data interface{}
}
//定义链表
type LinkTable struct {
Head *LinkNode
Tail *LinkNode
Length uint
}
func NewNode(data interface{}) *LinkNode {
return &LinkNode{nil, data}
}
//构建一个空表
func NewLTable() *LinkTable {
return &LinkTable{nil, nil, 0}
}
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
}
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
}
学号:355