双方向リスト
最初に、前期期末試験で「メモリの番地の理解が怪しい」人が多かったので、その確認のための Forms による小テストを行う。 情報構造論の10/5(火)小テスト 実施してみらた、各問題とも50%程度の正解率。ひとまず解説を […]
変態コード
Twitterで以下のようなコードが紹介されていた。 ポイントは、a[i] と書くべき所が、*(a + i) と等価であり、*(i + a) = i[a] と書かれている点。 でも、昔どこかで見たという点では、以下のコー […]
集合とリスト処理
リスト構造は、必要に応じてメモリを確保するデータ構造であり、データ件数に依存しないプログラム が記述できる。その応用として、集合処理を考えてみる。集合処理の記述には、2進数を使った方式やリストを用いた方法が一般的である。 […]
スタックと待ち行列
前回の授業では、リストの先頭にデータを挿入する処理と、末尾に追加する処理について説明したが、この応用について説明する。 計算処理中に一時的なデータの保存として、stackとqueueがよく利用される。それを配列を使って記 […]
リストへの追加処理
最初のリスト生成の説明では、補助関数 cons を用いて、直接リストを生成していた。 しかし、実際にはデータを入力しながらの処理となるであろう。 最も単純なリスト先頭への挿入 struct List { int data […]
リスト処理
リスト構造 リスト構造は、データと次のデータへのポインタで構成され、必要に応じてメモリを確保することで、配列の上限が制限にならないようにする。また、次のデータへのポインタでつなげているため、途中へのデータ挿入が簡単にでき […]
リスト構造と処理
データ処理において、配列は基本的データ構造だが、動的メモリ確保の説明で述べたように、基本の配列では大きさを変更することができない。これ以外にも、配列は途中にデータを挿入・削除を行う場合、の処理時間を伴う。以下にその問題点 […]
C言語での入出力処理のおさらい
テストのプログラム作成の問題で、入力処理の書き方が適切でないものが多いので、基本とテクニックの解説。 scanf()の使い方 // scanf( "フォーマット" , 引数... ) ; // データの型とフォーマット […]
様々な2次元配列
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i3x4[ 3 ][ 4 ] = […]
様々なデータの覚え方のレポート課題
前回の malloc() + free() の資料で、補足で説明したC++のnew, delete を含め、様々なデータ構造の覚え方の例やメモリイメージを説明し、前期中間のレポート課題を示す。 malloc+freeの振 […]