• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:なぜこの関数で、先頭ノードの次に挿入できるのかわからない。)

ハッシュ表にデータを挿入する処理の解説

このQ&Aのポイント
  • ハッシュ表にデータを挿入する処理では、まずデータのハッシュ値(データを13で割った余り)を求めます。
  • 次に、ハッシュ値を使って対応するバケット(リストの先頭ノード)を取得します。
  • 取得したバケットの先頭に、新しいノードを挿入します。挿入するノードにはデータと次のノードへのポインタが設定されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

このリストは、挿入順とは逆順に並んでいます。 つまり、20, 33, 46と挿入したリストは先頭から46, 33, 20と並ぶということです。 「常に最新ノードが先頭になる」というところを踏まえて読めば理解できるかと。

rinnshan
質問者

お礼

理解できました。ありがとうございます。 SetNode(temp,x,h->table[key]); この処理で、次が先頭要素を指すとされていて先頭の前が あるのかと思ってしまっていましたが、冷静に考えれば 次の行でh->table[key] = temp;により挿入する46を先頭要素に しているのですね。 D-Matsuさんがおっしゃっていたことはわかっていたのですが 「46の前に先頭要素がまた別にあるのではないか」のような間違った 解釈をしていたり、いろいろと変なことを思い込んでいたので 理解することができませんでした。 ですが、D-Matsuさんのアドバイスが呼び水となって理解まで持って 行くことができたので大変感謝を申し上げたいです。 ありがとうございました^^

すると、全ての回答が全文表示されます。

関連するQ&A