571
社区成员
发帖
与我相关
我的任务
分享type Node struct {
data int //数据
pNext *Node //指向下一节点指针
}
type LinkTable struct {
pHead *Node //头
pTail *Node //尾
NodeNum int //数量
}
func CreateLinkTable() *LinkTable {
var pLinkTable *LinkTable = new(LinkTable)
if pLinkTable == nil {
return nil
}
pLinkTable.pHead = nil
pLinkTable.pTail = nil
pLinkTable.NodeNum = 0
return pLinkTable
}
func AddNodeInLinkTable(pLinkTable *LinkTable, pNode *Node) int {
if pLinkTable == nil || pNode == nil {
return -1
}
//pLinkTable.mutex.Lock()
if pLinkTable.pHead == nil && pLinkTable.pTail == nil {
pLinkTable.pHead = pNode
pLinkTable.pTail = pNode
pLinkTable.pTail.pNext = nil
pLinkTable.NodeNum = 1
} else {
pLinkTable.pTail.pNext = pNode
pLinkTable.pTail = pNode
pLinkTable.pTail.pNext = nil
pLinkTable.NodeNum++
}
//pLinkTable.mutex.Unlock()
return 1
}
func SearchNodeInLinkTable(pLinkTable *LinkTable, pNode *Node) *Node {
if pLinkTable == nil {
return nil
}
var pNodeTemp *Node = pLinkTable.pHead
for pNodeTemp != nil {
pNodeTemp = pNode.pNext
if pNodeTemp == pNode {
return pNodeTemp
}
}
return nil
}
func getHead(pLinkTable *LinkTable) *Node {
if pLinkTable == nil {
fmt.Println("LinkTable is empty")
return nil
}
return pLinkTable.pHead
}
func getNexNode(pLinkTable *LinkTable, pNode *Node) *Node {
if pLinkTable == nil || pNode == nil {
fmt.Println("Linktable is empty")
return nil
}
var pNodeTemp *Node = pLinkTable.pHead
for pNodeTemp != nil {
if pNodeTemp == pNode {
return pNodeTemp.pNext
}
pNodeTemp = pNodeTemp.pNext
}
return nil
}
func DeleteLinkTable(pLinkTable *LinkTable) int {
if pLinkTable == nil {
return -1
}
for pLinkTable.pHead != nil {
var p *Node = pLinkTable.pHead
//pLinkTable.mutex.Lock()
pLinkTable.pHead = p.pNext
pLinkTable.NodeNum--
//pLinkTable.mutex.Unlock()
}
pLinkTable.pHead = nil
pLinkTable.pTail = nil
pLinkTable.NodeNum = 0
return 0
}

作者:289