571
社区成员
发帖
与我相关
我的任务
分享
// 定义节点
type LinkNode struct {
data interface{}
next *LinkNode
}
// 定义链表
type LinkTable struct {
length int
headNode *LinkNode
}
// 带有头节点的单链表的初始化
func CreateLinkTable() *LinkTable {
node := new(LinkNode)
L := new(LinkTable)
L.headNode = node
L.length = 0
return L
}
// 删除链表
func (lt *LinkTable) DeleteLinkTable() bool{
lt.headNode = nil
lt.length = 0
return true
}
// 判断链表是否为空
func (lt *LinkTable) IsNull() bool {
if lt.length == 0 {
return true
} else {
return false
}
}
// 得到链表长度
func (lt *LinkTable) GetLength() int {
return lt.length
}
// 单链表头插法
func (lt *LinkTable) AddElem(v interface{}) {
node := &LinkNode{data: v}
node.next = lt.headNode.next
lt.headNode.next = node
lt.length++
return
}
// 单链表尾插法
func (lt *LinkTable) AppendElem(v interface{}) {
node := &LinkNode{data: v}
cur := lt.headNode
for cur.next != nil {
cur = cur.next
}
cur.next = node
lt.length++
return
}
// 删除指定值结点
func (lt *LinkTable) RemoveElem(v interface{}) {
pre := lt.headNode
for pre.next != nil {
if pre.next.data == v {
pre.next = pre.next.next
lt.length--
return
} else {
pre = pre.next
}
}
fmt.Println("fail")
return
}
学号:310