我有一個來自列表的節(jié)點指針。我想用列表中的下一個節(jié)點更新值和下一個指針。這只不過是就地刪除,只允許訪問該指針。例如 3 -> 5 -> 8 -> 9 要刪除的節(jié)點:5(只允許訪問 5 個。假設(shè)前一個節(jié)點未知)在這種情況下,節(jié)點 [8] 的值和下一個指針可以復(fù)制到節(jié)點 [5]。我有以下代碼。它不是刪除元素。如果我嘗試使用“next”關(guān)鍵字訪問下一個指針,則會引發(fā)錯誤。package mainimport ( "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) }}//ERRORfunc 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}有人可以幫我解決這個問題嗎?
1 回答

婷婷同學(xué)_
TA貢獻1844條經(jīng)驗 獲得超8個贊
您得到的(第一個)錯誤是:
no new variables on left side of :=
因為nextNode
已經(jīng)存在。問題在于這兩行:
var nextNode *list.Element nextNode := node.next.(*list.Element)
在第一行中創(chuàng)建變量nextNode
。在第二行中,您使用短賦值:=
來創(chuàng)建一個新變量(由左側(cè)指定)并為其分配右側(cè)的值。只需省略第一行,您只需要其中一個:
nextNode := node.Next()
此外,您無法讀取或更改next
節(jié)點的指針,因為該next
指針未在Element
結(jié)構(gòu)中導(dǎo)出(以小寫字母開頭)。因此,您嘗試實現(xiàn)的目標(biāo)無法完成。但是您為此定義了一個函數(shù):Remove(e *Element) interface{}
- 1 回答
- 0 關(guān)注
- 276 瀏覽
添加回答
舉報
0/150
提交
取消