2分探索木
配列やリスト構造のデータの中から、目的となるデータを探す場合、配列であれば2分探索法が用いられる。これにより、配列の中からデータを探す処理は、O(log N)となる。(ただし事前にデータが昇順に並んでいる必要あり) // […]
双方向リストとdeque
deque(両端キュー) 双方向循環リストを使うと、(1)先頭にデータを挿入(addFirst/unshift)、(2)先頭のデータを取り出す(removeFirst/shift)、(3)末尾にデータを追加(addLas […]
双方向リスト
単純リストから双方向リストへ ここまで説明してきた単純リストは、次のデータへのポインタを持つ。ここで、1つ後ろのデータ(N番目からN+1番目)をアクセスするのは簡単だけど、1つ前のデータ(N-1番目)を参照しようと思った […]
リストを用いた集合とランダムアクセス・シーケンシャルアクセス
リスト処理による積集合 前述の方法は、リストに含まれる/含まれないを、2進数の0/1で表現する方式である。しかし、2進数であれば、int で 31要素、long int で 63 要素が上限となってしまう。 しかし、リス […]
集合とリスト処理
リスト構造は、必要に応じてメモリを確保するデータ構造であり、データ件数に依存しないプログラム が記述できる。その応用として、集合処理を考えてみる。集合処理の記述には、2進数を使った方式やリストを用いた方法が一般的である。 […]
スタックと待ち行列
前回の授業では、リストの先頭にデータを挿入する処理と、末尾に追加する処理について説明したが、この応用について説明する。 計算処理中に一時的なデータの保存として、スタック(stack)と待ち行列・キュー(queue)がよく […]
リスト処理のレポート課題(前期期末)
プログラムは書いて・動かして・間違って・直す が重要ということで、以下に前期期末試験前までに取り組むレポート課題をしめす。 レポート課題(プログラム例) Java を用いて、後に示すデータ処理をするためのリスト構造を定義 […]
Javaでリスト構造
テスト前のリスト導入の復習 前回のリスト構造の導入では、配列のデータに次のデータの入っている番号を添えることで途中にデータを挿入できるデータ構造の説明をした。 また、それをクラスを用いたプログラムを示した。 ヒープメモリ […]
テスト返却と追加説明
前期中間試験の返却に伴い、補足説明。 C言語,Javaにおける文の定義 テストの時に、下記のようなプログラムで piyo() は、for の範囲?みたいな質問があったので、補足説明 for( ... ; ... ; .. […]
配列に要素を追加
データが登録済みかどうかを判定する処理を作るために、登録された値を配列に次々と値を追加保存する場合、どのようにプログラムを記述するだろうか? 配列にデータを追加 次々と与えられた値を保存していくのであれば、Java であ […]