タグ

2007年6月18日のブックマーク (2件)

  • ポインタ虎の巻

    ポインタ虎の巻 初級篇~ポインタはなぜ難しいか? C言語を学ぶ上で、ほとんどの人が引っかかり、往々にCの勉強を放棄するきっかけとなるのがポインタである。しかし、ポインタはC言語という特定のプログラム言語だけではなく、コンピュータというものを理解する上で、必要不可欠な重要な機能である。C言語参考書では、ポインタを解説する上で「箱」のモデルを使って解説することが多いが、この虎の巻では、より突っ込んだ具体的な動作を解説することでポインタというものの質を解明して見ようと思う。参考書ではC言語の抽象レベルの上で解説がされるのが通例だが、虎の巻では単純化されたアセンブリ命令を使って具体的に解説する。 初級篇目次 変数とは何か? 疑似アセンブリの定義 文字列の処理 アドレスの取得 ポインタの型 関数呼び出しの手法 構造体とポインタ リスト構造 NEW 二進木 NEW 中級篇~ポインタの高度な技 ポイン

  • ポインタ虎の巻~リスト構造

    構造体を使った応用例として、リスト構造が挙げられる。リスト構造は非常に質的なデータ構造の一つであり、応用範囲が非常に広い。このリスト構造に習熟することがC言語初級卒業試験であるといっても過言ではない。 なぜリスト構造がこれほどに重要なのかというと、削除や挿入が簡単に出来るからである。配列の場合、とくに挿入はコスト高である。配列データの次に新しいデータを挿入するには、それ以降のデータを全部1つづつずらしてやらなければならない。削除の場合にもデータを詰める作業をするか、別個にフラグを持たせて「無効データ」をマーキングしてやる必要がある。 それに対し、リスト構造は挿入を低いコストで行うことができるが、その代わりに配列のように添字によるランダムアクセスはできなくなる。だから、添え字によるランダムアクセスのコストと、挿入のコストとのトレードオフとして選択すべきであるが、一般に有用なケースは非常に多