8年前ものすごく単純な単連結リストを作りました。個人的にしっくりこない所があり,悪い所/改善点が知りたいので指摘と修正をお願いします。)理論は分かっていたので読み解く前に作ることにしました。次の要素へのポインタ。Node型を扱うポインタにリストの先頭アドレスを入れる。最後のノードの最後尾に新しいノードをセット。finder->isLast())の処理が二重で嫌な感じです。前者のは.isLast()でwhile文をまわした場合,最後のNodeに処理がいきません。whileは使わない方針でお願いします)そのためwhile(true)を通してstd::coutなりdeleteしたあと,break;しました。後者はListに要素が一つもない時,finder->isLast()で落ちるためです。関係のない話ですが,この上のコードをコピペした後,文字を書き換えようとすると書き込み欄のスクロールバーが暴れてまともにかけないのですが原因は分かりませんか・・・?※2spoilerを表示,はどのようなタグを使えばいいのでしょう?[spoiler]ではないようで。finder->isLast())の処理が二重で嫌な感じです。前者のは.isLast()でwhile文をまわした場合,最後のNodeに処理がいきません。whileは使わない方針でお願いします)そのためwhile(true)を通してstd::coutなりdeleteしたあと,break;しました。後者はListに要素が一つもない時,finder->isLast()で落ちるためです。NULL)[~List]で良いように思います。後者の問題はAddNodeの事でしょうか?これは最初にheadがNULLかどうかで分ければよいと思います。Node型を扱うポインタにリストの先頭アドレスを入れる。最後のノードの最後尾に新しいノードをセット。関係のない話ですが,この上のコードをコピペした後,文字を書き換えようとすると書き込み欄のスクロールバーが暴れてまともにかけないのですが原因は分かりませんか・・・?ウェブブラウザ等の環境や具体的な症状が分からないと管理人勢も調査しづらいように思います。※2spoilerを表示,はどのようなタグを使えばいいのでしょう?[spoiler]ではないようで。なんて考えは、ちょっとはずれてるかと思わなくも無い気がしないでも無いです。してしまってもかまわないでしょう。Node型を扱うポインタにリストの先頭アドレスを入れる。Node(num);//新しいノードをセット}で、いいかと。ノードを追加する度に、毎回ノードを先頭から末尾までたぐり寄せるのは、ちょっと無駄ですので、リストの先頭ノードだけで無く、末尾のノードも押さえておくといいかもしれません。順番にこだわらなければ、末尾にでは無く先頭に追加していくのも1つの手です。n->next;}}で、いいかと。上から下へ順番に流れる素直な処理を書くことを念頭に置けば、よりスマートなプログラムになると思います。後は、行き当たりばったりにメンバ関数を増やさない事でしょうか。メンバ関数とほとんど同じですね。本当に必要ですか?何となくですが、「ここで最後のノードかどうか調べる必要があるなぁ。よし、チェックする関数でも作るる」みたいな安易な流れなような気がしてなりません。違ったらごめんなさい。※全く関係のない話ですが,この上のコードをコピペした後,文字を書き換えようとすると書き込み欄のスクロールバーが暴れてまともにかけないのですが原因は分かりません。8年前ありがとうございました。ポインタの有無も条件分岐に使えるんですね。クラス設計法について今後も気をつけたいと思います。bool型なら使いやすいかななどと勝手に作っていました。ソースが長い時に使いたいなと思ったのでききました。7f8b808fc6に最初の投稿のコードを書いたソースファイル(.cpp)そのものをのせました。これをエディタからこの返信欄にコピー&ペーストしたのち,改行してさらに下に文を付け加えようとすると私の環境ではスクロールバーの動きがおかしくなりました。googlechromeでは発生しません。返信がかなり書きづらかったので報告してみた次第です。これをエディタからこの返信欄にコピー&ペーストしたのち,改行してさらに下に文を付け加えようとすると私の環境ではスクロールバーの動きがおかしくなりました。googlechromeでは発生しません。返信がかなり書きづらかったので報告してみた次第です。なるか報告いただけるとありがたいですWin7・64bitのIE7で類似の挙動を確認しました。Firefoxでも発生しませんでしたのでIE特有の症状なんでしょうかね・・・?[hr][追記]こちらに一連の問題をまとめて投稿しておきました。ミクプラは自由にリンクできます。