![](/img/trans.png)
[英]Lists next to floated elements: How to get list items in the right place?
[英]How to update the next pointer in place in go list?
我有一個列表中的節點指針。 我想用列表中的下一個節點更新值和下一個指針。 這僅是刪除,僅允許訪問該指針。
例如3-> 5-> 8-> 9要刪除的節點:5(只允許訪問5。假定先前的節點未知)
在這種情況下,可以將節點[8]的值和下一個指針復制到節點[5]。 我有以下代碼。 它沒有刪除元素。 如果我嘗試使用“ next”關鍵字訪問下一個指針,則會引發錯誤。
package main
import (
"container/list"
"fmt"
)
func main() {
l := list.New()
l.PushFront(4)
l.PushFront(5)
e4 := l.PushFront(7)
l.PushFront(6)
l.PushBack(9)
res := deleteNode(e4)
fmt.Println(res)
for e:=l.Front(); e!=nil;e=e.Next() {
fmt.Println(e.Value)
}
}
//ERROR
func deleteNode(node *list.Element) bool {
if node == nil || node.Next() == nil {
return false
}
var nextNode *list.Element
nextNode := node.next.(*list.Element)
node.Value = node.Next().Value.(int)
nextNode = nextNode.next.(*Element)
return true
}
有人可以幫我嗎?
您得到的(第一個)錯誤是:
no new variables on left side of :=
因為nextNode
已經存在。 問題在於這兩行:
var nextNode *list.Element
nextNode := node.next.(*list.Element)
在第一行中,創建變量nextNode
。 在第二行中,您使用了短賦值:=
,它創建了一個新變量(由左側指定),並在右側分配了值。 只需省略第一行,您只需要其中之一:
nextNode := node.Next()
此外,您不能讀取或更改節點的next
指針,因為next
指針不會在Element
結構中導出(它以小寫字母開頭)。 因此,您嘗試實現的目標無法完成。 但是您為此定義了一個函數: Remove(e *Element) interface{}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.