2012-02-01 12 views
2

リンクリスト内のヘッドノードは情報を持っているか、リンクリストの最初のノードだけを指していますか?
ヘッドノードをリンクリストの開始ノードとして定義できますか?
ヘッドノードは最初のノードのみを指していますか? リンクされたリストはノードで構成され、各ノードにはデータと、リスト内の別のノードへのリンクが含まれています。しかし、最初のノードは、データと2番目のノードへのリンクを含むノードですか?あるいは、それはノードへのリンク(およびデータなし)だけを含んでいますか?私は、リンクされたリストの最初のノードにデータと別のノードへのリンクがあると考えましたが、1つの入門書では、頭はノードですが、最初のノードに移動するリンクです。同時に、headはノードの型の変数です。なぜそれはこのようなものですか?リンク・リストの先頭ノードと開始ノードの違いは何ですか?

+3

リンクされたリストの実装に完全に依存します。 –

答えて

-1

従来、ヘッドノードはリンクされたリストの最初のノードですが、「タイプ」の観点からは他のどのノードとも変わりません。それには、データだけでなく、次のノード(リンクされたリストの第2ノードが存在する場合)へのポインタも含まれます。

+1

この回答は必ずしも真実ではありません。リストを実装する方法はたくさんありますが、この例は1つだけです。 –

+0

@Carl - 私はこれが唯一の方法であると主張しませんでした。私は単にこれが大会だと言った。 – Sid

+1

この実装がコンベンションであると述べるには、どのような基準がありますか? –

2

実装によって異なります。 head変数は、通常、この1ノードリストのようなリストの最初のノードを指し示すノードポインタある:

 +--------+ 
head -> | node 1 | -> NULL 
     +--------+ 

しかし、私が見た実装場所(二重に「空」リンクされた)リストは2つのノードで構成されているため、挿入および削除コードは、先頭または末尾の前に挿入しようとするエッジの場合や頭/尾の削除を心配する必要はありません。

挿入する位置(および削除を許可するすべてのノード)にprevノードとnextノードがあるため、コードは簡略化されています。

 +-------+ +------+ +-------+ 
head -> | dummy | -> | node | -> | dummy | -> NULL 
NULL <- | node | <- | 1 | <- | node | <- tail 
     +-------+ +------+ +-------+ 

ではなく頭や尾をチェックするたくさんの、挿入および削除は、次のとおりです。

def insertBefore (node, newnode): 
    newnode.next = node 
    newnode.prev = node.prev 
    node.prev.next = newnode 
    node.prev = newnode 

def deleteNode (node): 
    node.prev.next = node.next 
    node.next.prev = node.prev 
    free node 

それ少し複雑なリストトラバーサルあなたはcurr = head.nextではなくcurr = headで開始し、いつ終了しなければならなかったので、 curr == NULLではなくcurr == lastであるが、使用されていない2つのノードを犠牲にして有効なトレードオフと考える人もいる。

+0

私たちは反対側を非常に説得力をもって論じたように見えます:) – Sid

+0

@Sid:本質的には質問が貧しいためです。 – ildjarn

1

あなたはそれをリストオブジェクト

  • 内部ノードへ

    • 店のポインタが空のデータメンバー
    • と「頭」ノードは、特別な「頭を持っている、少なくとも3つの異なる方法を行うことができますデータメンバのないノード

    これらのそれぞれは、いくつかの操作を優先するか、使用される領域を最適化するトレードオフを持っています。

    他のノードと同じタイプのヘッドオブジェクトを持つと、リンク操作が簡単になります。データペイロードのないヘッドノードを有することにより、メモリが節約される。リストオブジェクト内にポインタを格納すると、空のリストの動的割り当てが節約される可能性がありますが、swapを実装するのが難しくなります。

    すべての用途に最適です。

  • 関連する問題