为了账号安全,请及时绑定邮箱和手机立即绑定

尾部元素未插入 Golang 链表的最后

尾部元素未插入 Golang 链表的最后

Go
Qyouu 2023-02-14 17:39:25
我在 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.nextlist.tail指向 newNode。


在 else 块中你需要设置listReceiver.tail = &newNode

在任何情况下listReceiver.tail = &newNode都应设置为可以在if-else块外


查看完整回答
反对 回复 2023-02-14
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信