我在 Golang 中有一个双向链表。就是这个
type node struct {
value string
next *node
prev *node
}
type list struct {
head *node
tail *node
length int
}
我想在列表的最后插入元素。所以我需要做三件事:
-- 改变当前Last的下一个指针
-- 改变新节点的prev指针
-- 将新节点指向 nil
我做的完全一样,但是 prev 指针似乎没有指向前一个最后一个节点,因为它没有从后面打印出来。你能发现问题吗?我在最后添加了“粉红色”这个词。这是它的功能。
func (listReceiver *list) insertLast(incomingValue string) {
printNewLine := fmt.Println
newNode := node{value: incomingValue}
currentNode := listReceiver.head
if listReceiver.head == nil {
listReceiver.head = &newNode
listReceiver.tail = &newNode
fmt.Printf("New head -- %s", listReceiver.head.value)
printNewLine()
listReceiver.length++
} else {
for currentNode.next != nil {
printNewLine(currentNode.value)
currentNode = currentNode.next
}
currentNode.next = &newNode
newNode.next = nil
newNode.prev = currentNode
fmt.Printf("New Tail -- %s ", newNode.value)
printNewLine()
listReceiver.length++
}
}
这些是打印语句
Linked List From Front --
->R->Kanak->Z->Zubin->A->Nani->US->Arjun->Pink
Linked List From Tail --
->Arjun->US->Nani->A->Zubin->Z->Kanak->R
茅侃侃
相关分类