2分探索木にデータ追加と演習
2分探索木にデータを追加 前回の授業では、データの木構造は、補助関数 tcons() により直接記述していた。実際のプログラムであれば、データに応じて1件づつ木に追加するプログラムが必要となる。この処理は以下のようになる […]
2分探索木
配列やリスト構造のデータの中から、目的となるデータを探す場合、配列であれば2分探索法が用いられる。これにより、配列の中からデータを探す処理は、O(log N)となる。 // 2分探索法 int array[ 8 ] = […]
双方向リスト
単純リストから双方向リストへ ここまで説明してきた単純リストは、次のデータへのポインタを持つ。ここで、1つ後ろのデータ(N番目からN+1番目)をアクセスするのは簡単だけど、1つ前のデータ(N-1番目)を参照しようと思った […]
ポインタと番地の理解
リスト構造とかのプログラミングでは、ポインタが使われるが、番地とポインタをうまく理解していないと、どのような処理をしているのか理解しづらいはず。 今回の補講では、ポインタを理解してもらう。 以下では、ポインタを使った処理 […]
情報構造論の追試のための解答例
情報構造論の成績不振者のための追試を、8/9(木) 15:30 より 4EI 教室で実施します。 インターンシップなどで当日参加困難な場合は、別日に実施しますので、連絡してください。 テスト問題の解答および解説を、以下に […]
局所変数配列をreturn
情報構造論の前期期末試験で、局所変数返しの解答が多かったので、メモ。 JavaScript でプログラムを書いていると、動くネタだけど、C言語では初心者がよく間違って書いてしまう定番であり、それなりに動いたりするから、誤 […]
集合とリスト処理
リスト構造は、必要に応じてメモリを確保するデータ構造であり、データ件数に依存しないプログラム が記述できる。その応用として、集合処理を考えてみる。 2進数を用いた集合計算 リストによる集合の前に、もっと簡単な集合処理を考 […]
スタックと待ち行列
計算処理中に一時的なデータの保存として、stackとqueueがよく利用されるが、それを配列を使って記述したり、任意の大きさにできるリストを用いて記述する。 # 授業は、前回の演習時間が不十分だったので、前半講義、後半演 […]
リスト追加処理
最初のリスト生成の説明では、補助関数 cons を用いて、直接リストを生成していた。 しかし、実際にはデータを入力しながらの処理となるであろう。 最も単純なリスト挿入 struct List* top = NULL ; […]
リスト構造でのプログラミング
前回説明した、リスト構造について簡単なプログラム作成を通して、プログラミングに慣れてみよう。 簡単なリスト処理の例 // 全要素を表示する関数 void print( struct List* p ) { for( ; […]