リストへの追加処理
最初のリスト生成の説明では、補助関数 cons を用いて、直接リストを生成していた。 しかし、実際にはデータを入力しながらの処理となるであろう。今回は、前回のリスト操作のプログラムの確認などと合わせ、リストへのデータの追 […]
リスト処理
リスト構造 リスト構造は、データと次のデータへのポインタで構成され、必要に応じてメモリを確保することで、配列の上限が制限にならないようにする。また、次のデータへのポインタでつなげているため、途中へのデータ挿入が簡単にでき […]
リスト構造の導入
データ処理において、配列は基本的データ構造だが、動的メモリ確保の説明で述べたように、基本の配列では大きさを変更することができない。これ以外にも、配列は途中にデータを挿入・削除を行う場合、の処理時間を伴う。以下にその問題点 […]
様々なデータの覚え方のレポート課題
前回の malloc() + free() の資料で、様々なデータ構造の覚え方の例やメモリイメージを説明し、前期中間のレポート課題を示す。 malloc+freeの振り返り // 文字列(可変長)の保存 char str […]
malloc()とfree()
前回の授業で説明した、alloca() は、スタック領域にデーターを覚えるので、allocaを実行した関数の終了ともに配列領域が消えてしまう。しかし、関数が終わってもそのデータを使いたいといった場合には、malloc() […]
悪趣味なプログラム
#include <stdio.h> int a[ 3 ] = { 11 , 22 , 33 } ; int main() { for( int i = 0 ; i < 3 ; i++ ) […]
ポインタ処理
ここからは、次のメモリの消費を考慮したプログラムの説明を行うが、ポインタの処理に慣れない人が多いので、ポインタを使ったプログラミングについて説明を行う。 値渡しとポインタ渡し 大きなプログラムを作成する場合、変数名の使い […]
再帰呼び出しと再帰方程式
前回の授業では、簡単な再帰呼び出しのプログラムについて再帰方程式などの説明を行った。今日の授業では、ハノイの塔の処理時間や、マージソートのプログラムの処理時間について検討を行う。 ハノイの塔 ハノイの塔は、3本の塔にN枚 […]
再帰呼び出しの処理時間の見積もり
前回の授業の復習と練習問題 前回の授業では、for ループによる繰り返し処理のプログラムについて、処理時間を T(N) の一般式で表現することを説明し、それを用いたオーダー記法について説明を行った。理解を確認するための練 […]
繰り返し処理と処理時間の見積もり
単純サーチの処理時間 ここで、プログラムの実行時間を細かく分析してみる。 // ((case-1)) // 単純サーチ O(N) #define SIZE 1024 int a[ SIZE ] ; // 配列 int s […]