571
社区成员
发帖
与我相关
我的任务
分享1、结构体定义
type Node struct {
data interface{}
next *Node
}
type LinkTable struct {
headNode *Node //头节点
length int //当前链表的长度
}
2、初始化
func initLinkTable() *LinkTable {
node := new(Node)
linkTable := new(LinkTable)
linkTable.headNode = node
linkTable.length = 0
return linkTable
}
3、插入
//头插法
func insertHeadNode(data interface{}, linkTable *LinkTable) {
node := &Node{data, nil}
node.next = linkTable.headNode.next
linkTable.headNode.next = node
linkTable.length++
}
//尾插法
func insertTailNode(data interface{}, linkTable *LinkTable) {
node := &Node{data, nil}
curNode := getTailNode(linkTable)
curNode.next = node
linkTable.length++
}
//指定位置插入节点
func append(index int, data interface{}, linktable *LinkTable) {
if index <= 0 || index > linktable.length+1 {
fmt.Println("当前位置错误")
return
}
curNode := linktable.headNode
//找到需要插入节点的前一个节点
for j := 0; j < index-1; j++ {
curNode = curNode.next
}
node := new(Node)
node.data = data
node.next = curNode.next
curNode.next = node
linktable.length++
}
4、查找
//按序号查找
func findNodeByIndex(index int, linktable *LinkTable) *Node {
if index <= 0 || index > linktable.length {
fmt.Println("当前序号错误")
return nil
}
curNode := linktable.headNode
for j := 0; j < index; j++ {
curNode = curNode.next
}
return curNode
}
//按值查找
func findNodeByValue(data interface{}, linktable *LinkTable) *Node {
curNode := linktable.headNode.next
for curNode != nil {
if curNode.data == data {
return curNode
}
curNode = curNode.next
}
return nil
}
5、打印链表
func showLinkTableData(linkTable *LinkTable) {
curNode := linkTable.headNode.next
for curNode != nil {
fmt.Print(curNode.data)
fmt.Print(" ")
curNode = curNode.next
}
fmt.Println()
}
6、删除节点
func deleteNode(index int, linktable *LinkTable) {
if index <= 0 || index > linktable.length {
fmt.Println("当前位置错误")
return
}
curNode := linktable.headNode
//找到删除节点的前一个节点
for j := 0; j < index-1; j++ {
curNode = curNode.next
}
curNode.next = curNode.next.next
linktable.length--
}

git add .\menu.go .\LinkTable.go
git commit -m "modified menu.go(add function testLinkTable()) and commit LinkTable.go"
git push origin master
分别使用以上命令,将新建文件LinkTable.go和修改后的文件menu.go提交到暂存库和本地库,最后push至远程仓库。结果如下

作者:481