第1回「配列」
基本的な配列の仕組みと構造について学習する。また、多次元の配列や構造体を要素にもつ応用的な配列構造について理解する。さらに、配列へのデータの挿入、削除、探索などの基本的な操作や計算量などについて学ぶ。
第2回「スタック」
基本的なデータ構造であるスタックの仕組みについて学習する。また、スタックに必要な操作や特徴、そして、スタックがどのように使われるのか応用例やC言語での実装について学ぶ。
第3回「キュー」
基本的なデータ構造であるキューの仕組みについて学習する。また、キューに必要な操作や特徴、そして、キューがどのように使われるのか応用例やC言語での実装について学ぶ。
第4回「連結リスト」
連結リストの仕組みについて学習する。連結リストに対するデータの探索、挿入、削除等の基本的な操作について学ぶ。また、連結リストと配列との操作効率の違いについて学習する。
第5回「連結リストの応用」
連結リストを用いたスタックとキューのデータ構造の実装例について学習する。また、連結リスト(片方向連結リスト)の構造を拡張した、双方向連結リスト、環状連結リスト、環状双方向連結リスト等について学ぶ。そして、これらのリスト構造における利点や欠点、連結リストへのデータの挿入や削除の計算量について考える。
第6回「バイナリサーチツリー」
ツリー構造とツリーに関する用語について学ぶ。特に基本的なデータ構造であるバイナリツリーとバイナリサーチツリーの特徴や性質について学習する。バイナリサーチツリーに対する走査(行きがけ順走査、通りがけ順走査、帰りがけ順走査)の仕組みとコード例について学ぶ。
第7回「バイナリサーチツリーの操作」
バイナリサーチツリーに対する基本的な操作として、ノードの探索、ノードの挿入、ノードの削除について学ぶ。また、バイナリサーチツリーの特徴、バイナリサーチツリーの操作に関する計算量について学習する。
第8回「ツリーの応用」
バイナリサーチツリーに対する基本的な操作として、ノードの探索、ノードの挿入、ノードの削除、ツリーの走査などがある。この回では、その他の応用的な操作について考える。また、バイナリサーチツリーの問題点について考える。そして、平衡木の仕組みと性質について学習する。
第9回「ハッシュテーブルとオープンアドレス法」
ハッシュ法はデータの数に関係なく定数計算量で、データの探索、挿入、削除を行うことができる最速の手法である。この回では、ハッシュ関数、ハッシュ値の衝突について学ぶ。また、オープンアドレス法の特徴について学習する。
第10回「ハッシュテーブルと連鎖法」
ハッシュ法はデータの数に関係なく定数計算量で、データの探索、挿入、削除を行うことができる最速の手法である。この回では、ハッシュ関数、ハッシュ値の衝突について学ぶ。連鎖法の特徴について学習する。また、文字列データからのハッシュ値計算について考える。
第11回「再帰」
再帰プログラムは自分自身を繰り返し呼び出し、そのたびに異なる引数を渡していく。この回では、再帰の仕組みと様々な再帰プログラムの例について学ぶ。また、再帰とスタックの関係、末尾再帰について学習する。
第12回「ソーティング」
バブルソート、選択ソート、挿入ソートなどの基本的なソーティングのアルゴリズムについて学び、これらのアルゴリズムのC言語によるコード例について学習する。また、これらのソーティングアルゴリズムの計算量や特徴について考える。
第13回「ソーティングの応用」
高速なソーティングの例として、クイックソート、マージソートについて学習する。クイックソートやマージソートは、再帰プログラムで実現することができる。C言語によるクイックソートやマージソートの実装について学ぶ。また、C言語のqsort関数の利用例について考える。
第14回「ヒープ」
ヒープはツリーの一種であり、ノードの挿入と削除を高速に行うことができる。この回ではヒープの基本的な仕組みについて学ぶ。また、ヒープを応用した優先度付きキューとヒープソートについて学習する。
第15回「グラフ」
グラフのデータ構造について学習する。グラフに関する用語と意味、そして、コンピュータにおけるグラフの表現方法、深さ優先探索(DFS)、幅優先探索(BFS)等のグラフ探索アルゴリズムについて学ぶ。
|