FC2ブログ
夢か現か、きっと気付けば、貴方は夢うつつのまどろみの中へ。
今日は、珍しく学生らしく(?)データ構造について考えてみましょう。
といいつつ、ここにはコーディングの方法などは一片も書きませんのであしからず。

書くのは、とある方式になんの意味があるのか、という私の思考の断片だけなのです。

元々は某先生がダミーノードを用いたリスト構造を書いていたのですが
ダミーノードが末尾のみにあり、その意味が理解できなかったから始まったのです…。

>>リスト:ダミーノード法
簡単なリスト構造の場合、リストの先頭を示すポインタを保持する必要があります。
このせいで、ノードの追加/削除時に、先頭とそれ以外で処理を分ける必要があるのです。
(その理由は、一度リストを書いてみると分かります)

と、ここで気づく人も居るかもしれないですが。
ダミーノード法は、それを解消するための方法なのです。

そして…私の悩みの種となったのは、何故、先生のコードは
ダミーノードが末尾にしかないのかが理解できないからなのでした…。
先頭の例外処理を無くす為のダミーノードが、何故か末尾にある。
同時に、ダミーノードが末尾にあっても処理が煩雑化するようにしか思えない。
利点はなんだろう、と考えて見る。

可能性1:いつか先頭と末尾両方に同じダミーを設置して循環リストっぽく使えるように
…書いて思うのです。末尾にしか書いてない時点で、これは無いな、と。
これに発展させる気なら、まずは先頭だけ書いて、後日末尾側を追加しそうだし。

可能性2:実はダミーノードの利点を知らない
いや、これだったら、超怖いのですが。先生、頼りにならないってことになるし。
あって欲しくない可能性No1。

可能性3:ダミーノード法に別の利点がある
最有力かな?
もしかしたら、末尾の判断がNULLポインタだとまずいことってあるのかな??
それとも、どこか処理が簡略化できるように…?

可能性4:実は挑戦状
「ふふふ、間違いを見つけて指摘してみせろ!」という挑戦状なのでは。
…。そんな性格の先生ではないような気がするんです(--;


んー、ネットで探しても、いまいち末尾ダミーノードは見つからない。
あっても、循環リストに発展してるもの。
とりあえず、課題に先頭、末尾への追加関数を言われたので
ノートにガリガリ、PCでカタカタ動作テスト、としてますが。
やはり…末尾ダミー、意味が分からないorz

ということで、私のノート上では先頭にダミーの方式に変更。(いいよね?w
うん、すんなり落ち着いていい感じ♪
スポンサーサイト



2006.06.09 (19:01) / School / (0) / (0) /





 管理者にだけ表示を許可する


Copyright © 2004 Powered by FC2 All Rights Reserved.
Template by lovehelm
/ 2019.10 /
S M T W T F S
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -