我在 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->PinkLinked List From Tail -- ->Arjun->US->Nani->A->Zubin->Z->Kanak->R
1 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
编辑----
您已经有了列表的尾部,无需使用for currentNode.next != nil {}
. 只需将tail.next
和list.tail
指向 newNode。
在 else 块中你需要设置listReceiver.tail = &newNode
在任何情况下listReceiver.tail = &newNode
都应设置为可以在if-else
块外
- 1 回答
- 0 关注
- 93 浏览
添加回答
举报
0/150
提交
取消