回答編集履歴

1 微修正

ikedas

ikedas score 2970

2016/12/04 14:51  投稿

回答になりませんが、強いて言えば、両方向リストをわざわざ連想配列など使って実装しているところは削れます。
両方向リストとは、「各々の節点に2つのリンクを保持して、1つで前を指しもう1つで次を指すようにする」(セジウィック『アルゴリズム』) ものです。この性質を満たしていれば、そのデータ構造は両方向リストです。たとえばPythonのリストはインデクスのついた要素の列ですから、自然数の公理により、各要素は前の要素と後の要素を持ちます (最初と最後の要素を除く)。つまり各要素が前と後の要素を指すので、Pythonのリストは両方向リストです。
両方向リストとは、「各々の節点に2つのリンクを保持して、1つで前を指しもう1つで次を指すようにする」(セジウィック『アルゴリズム』) ものです。この性質を持っていれば、そのデータ構造は両方向リストとみなせます。たとえばPythonのリストはインデクスのついた要素の列ですから、自然数の公理により、各要素は前の要素と後の要素を持ちます (最初と最後の要素を除く)。つまり各要素が前と後の要素を指すので、Pythonのリストは両方向リストとみなせます。
あとは自分で考えて下さい。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る