• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:java教えてください。)

Javaで双方向リストを作成する方法

このQ&Aのポイント
  • Javaで双方向リストを作成する方法を紹介します。
  • 双方向リストの要素の追加や削除方法も解説します。
  • さらに、双方向リストの要素を逆順に表示する方法も紹介します。

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

  • ベストアンサー
  • Lchan0211
  • ベストアンサー率64% (239/371)
回答No.2

双方向リストのメリットは、データの追加/削除操作を高速にできる (リンク操作のためにループをする必要がない)点にあります。 このソースでは、せっかくのprevがあまり有効に活用されておらず、 片方向リストと処理性能が変わりません。 実質的に、双方向リストの処理になってないです。 まず、insertTail()やdeleteTail()の処理は、whileを使わないで 実現すべきです。 この処理をするには、リストの最終ノードを求める必要がありますが、 循環双方向リストの形にしておけば、リスト開始ノードのprevが 最終ノードということなります。 (循環双方向リストでなく、リストの先頭ノードと最終ノードを保持した、 リストオブジェクトを別に作る方法もあります。) 次に、insert(),delete()について、 このメソッドは、指定値と同じ値を持つノード位置に 新しいノードを挿入(またはそのノードを削除)という機能 なのだと思いますが、ノードの検索機能とノードの挿入/削除機能が 一緒になっているため、双方向リストのメリットを享受できません。 (1)指定値を持つノードを検索し、そのノードオブジェクトを返却するメソッド(find) (2)ノードオブジェクトを指定し、そのノードの位置に新しいノードを 挿入する(またはそのノードを削除する)メソッド の2つに分ければ、それぞれのメソッドの用途が広がり、 (2)のメソッドは双方向リストのメリットを活かした処理になります。 (参考) http://akademeia.info/index.php?%C1%D0%CA%FD%B8%FE%A5%EA%A5%B9%A5%C8 http://ja.wikipedia.org/wiki/%E9%80%A3%E7%B5%90%E3%83%AA%E3%82%B9%E3%83%88

noname#95170
質問者

お礼

回答ありがとうございます。 書き直してみます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

実行してみればわかるけど insert系は全滅です. 最後の文が間違っているだけだけど. deleteHead もあやしいなぁ. 操作前と操作後の状況を図に描いて, 「それぞれのメンバの値がどうなればいいのか」を考えてみてください.

関連するQ&A