2012-03-13 5 views
3

ヘッドノードをリンクリストの無駄なデータに保つことによるパフォーマンス上の利点は何ですか?データなしでヘッドノードをリンクリストに保持することのパフォーマンス上の利点は何ですか?

ヘッドノードを使用してリンクリスト操作の実装を読んでいますが、これは最初のノードへのポインタのみを保持しています(ヘッドノードのデータは役に立たない)。

しかし、ヘッドポインタの代わりにヘッドノードを使用するという単一の利点を理解することはできません。

1つの問題と2つの実装、1つはヘッドノード、もう1つはヘッドポインターとパフォーマンス/複雑さの間のトレードオフがあります。

答えて

7

ダミーヘッダノードは、これらの理由のために使用される:

  • 挿入の特別な場合に対処するために必ずしもすべてのノードが前のノードを有している要件(/均一な方法が簡単になり)
  • を満たすために頭の中に入れたり、頭から削除したりする。他のノードと同様です。

他にも、パフォーマンス/メモリの利点はありません。

+0

第2のものは意味があり、以前のノードを維持する利点は何ですか? –

+3

実際には2つの理由が関連しています。最初のものは、以前のポインタも持っている二重リンクリストの方がより便利です。ノードをパラメータとして取るいくつかのメソッドがあるとします。あなたのメソッドがダミーヘッドリストを使って前のノードにもアクセスしたい場合は、 'null'ポインタ参照を避けることができます。しかし、ダミーノードに出くわしたかどうかを確認する必要があります。 – MadChuckle

1

もう1つの利点は、ノードが頻繁に追加されたり削除されたりするため、現在使用可能なノードの数をリンクリストに保持することができるため、ヘッドのノード数リンクされたリストのノード。

関連する問題