0

修正:

リンク #1 http://play.golang.org/p/CKRNyWYF8X

リンク #2 http://play.golang.org/p/oT2yKzFwep

最初のリンクから、パニックエラーはこれから来ると確信しています

func (A *DoublyLinkedList) AddHead(input_value interface{}) {
  temp_node := &Node{value: input_value, prev: nil, next: A.head}
  original_head_node := A.head
  original_head_node.prev = temp_node
  A.length++
}

しかし、これを二重連結リストに使用すると、少し後でパニックになります。以下のこれは元のヘッドを前のポインターに接続しないため、まだ失敗します。

  func (A *DoublyLinkedList) AddHead(input_value interface{}) {
     A.head = NewNode(input_value, nil, A.head)
     A.length++
  }

これがその一つです。これには同様の問題があります。

  cannot assign to target_node.GetPrevNode().GetNextNode()

このようにポインター参照をサポートしていませんか? ポインターを取得する必要があるたびに新しい変数を割り当てるだけで、これを修正しました。しかし、一番上の私の最初の質問はまだコンパイルされません。

要するに、Go で新しい要素を追加するときに双方向リンク リストを接続するにはどうすればよいですか?

4

1 に答える 1