前提・実現したいこと
アルゴリズムとデータ構造勉強中の者で、双方向連結リストでリストの最終位置を返すEndlist()メソッドを作る演習問題をやってるのですが、私が書いたコードが合ってるのかどうか自分でも分からず困っています。
ご指摘やアドバイスなど頂けると幸いでございます。
回答お願いします。
Endlist()メソッドのアルゴリズムについて
リストの最終位置なので、最終要素の次であるnullを返す事になると思うのですが、nullというのは要素の最初の前にも同じくnullというデータが入っていると思います。
なので、w2というセルを先頭に置き、そこからw2がnullではない時、w2=w2.next;とリストの要素をnextさせ続け、もしw2.nextがnullとなった時に、nullを返すというアルゴリズムを考えました。
該当のソースコード
class Cell { // Cell 形式 int value ; // 値 Cell prior, next ; // 次のセル } class list { int N; // 要素数 Cell base; list() { // コンストラクタ N=0 ; base=null ; } Cell Endlist() { Cell w2 = base ; while(w2 != null) { w2=w2.next; N++; if(w2.next==null) { w2=null; } } return w2; } }
補足情報(FW/ツールのバージョンなど)
単にnullを返すだけなら、return nullで即終わる事なのですが、nullというのはリストの最初の要素の手前と最後の要素の直後に二つあるため、このようなコードをつくりました。
見ていただければ幸いです。
あなたの回答
tips
プレビュー