アルゴリズムとデータ構造 補足資料7-1 「メモリでの『構造体の配列』」

Slides:



Advertisements
Similar presentations
1 データ構造とアルゴリズム 第 3 回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
Advertisements

第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
データ構造とアルゴリズム 第10回 mallocとfree
基礎プログラミングおよび演習 第9回
アルゴリズムとデータ構造 補足資料13-4 「2分探索木の追加・削除(ダイジェスト)」
情報処理Ⅱ 2005年12月9日(金).
アルゴリズムとデータ構造 2011年6月13日
アルゴリズムとデータ構造 補足資料7-3 「単純選択ソートselsort.c」
構造体.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
アルゴリズムとデータ構造 補足資料4-2 「線形探索」
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造 補足資料10-2 「nクイーン」
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 構造体, 構造体とポインタの組み合わせ,.
Cプログラミング演習 中間まとめ2.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング序論 2. n人のインディアン.
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
アルゴリズムとデータ構造 補足資料10-1 「騎士巡回」
アルゴリズムとデータ構造 補足資料14-2 「ダイレクトチェイニング法」
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造 補足資料4-1 「メモリと配列」
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
アルゴリズムとデータ構造 補足資料6-2 「サンプルプログラムcat2.c」
演習2の解答例 2006年12月22日 海谷 治彦.
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
アルゴリズムとデータ構造1 2009年7月9日
復習その1+α JBuilderの使い方を思い出す。 配列とGUI
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
オブジェクト・プログラミング 第8回.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2006年7月4日
ポインタとポインタを用いた関数定義.
アルゴリズムとデータ構造 2012年6月11日
ファイルの読み込み, ファイルからのデータの取り出し, ファイルの書き出し
アルゴリズムとデータ構造1 2009年6月15日
アルゴリズムとデータ構造 補足資料11-3 「線形リストのオペレータ」
R8C I/Oポートの仕組み SFR定義ファイルの中身.
ネットワーク・プログラミング Cプログラミングの基礎.
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
高度プログラミング演習 (11).
アルゴリズムとデータ構造 補足資料9-1 「ハノイの塔」
アルゴリズムとデータ構造 補足資料6-1 「サンプルプログラムcat1.c」
アルゴリズムとデータ構造 2010年6月17日
アルゴリズムとデータ構造 補足資料5-3 「サンプルプログラムstrcat.c」
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
アルゴリズムとデータ構造1 2005年7月12日
アルゴリズムとデータ構造1 2007年7月6日
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
C言語講座第5回 2017 構造体.
高度プログラミング演習 (10).
第13章 構造体 講習最後だよ!.
Presentation transcript:

アルゴリズムとデータ構造 補足資料7-1 「メモリでの『構造体の配列』」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志

struct item{ int key; char name[7]; } ; main() { x x.key アドレス(32bit) 中身(1記憶単位は8bit) … 0x 40ea 0800 1101 0000 0x 40ea 0801 0000 0111 0x 40ea 0802 0000 0000 0x 40ea 0803 0x 40ea 0804 0000 0110 0x 40ea 0805 0x 40ea 0806 0101 1001 0x 40ea 0807 0100 1110 0x 40ea 0808 0101 0101 0x 40ea 0809 0x 40ea 080a 0100 0001 0x 40ea 080b 0x 40ea 080c 0100 1100 0x 40ea 080d 0110 1111 0x 40ea 080e 1010 0111 0x 40ea 080f 0101 0000 0x 40ea 0810 0x 40ea 0811 0x 40ea 0812 0100 1011 0x 40ea 0813 1101 0100 0x 40ea 0814 0x 40ea 0815 0x 40ea 0816 struct item{ int key; char name[7]; } ; main() { struct item x;   x.key = 1536; x.name[0]=‘Y’; x.name[1]=‘N’; x.name[2]=‘U’; x.name[3]=‘\0’; … } x x.key x.name x.name[0] x.name[1] x.name[2] x.name[3] x.name[4] x.name[5] x.name[7]

struct item{ int key; char name[7]; } ; main() { x x.key struct item x;   x.key = 1536; x.name[0]=‘Y’; x.name[1]=‘N’; x.name[2]=‘U’; x.name[3]=‘\0’; … } x x.key x.name x.name[0] x.name[1] x.name[2] x.name[3] x.name[4] x.name[5] x.name[7]

struct item{ int key; char name[7]; } ; main() { x struct item x;   x.key = 1536; x.name[0]=‘Y’; x.name[1]=‘N’; x.name[2]=‘U’; x.name[3]=‘\0’; … } x x.key 1536 x.name x.name[0] Y x.name[1] N x.name[2] U \0 x.name[3] x.name[4] x.name[5] x.name[7]

struct item{ int key; char name[7]; } ; main() { struct item x;   x.key = 1536; x.name[0]=‘Y’; x.name[1]=‘N’; x.name[2]=‘U’; x.name[3]=‘\0’; … } x x.key 1536 x.name YNU

struct item{ int key; char name[7]; } ; main() { struct item a[5]; アドレス(32bit) 中身(1記憶単位は8bit) … 0x 40ea 0800 1101 0000 0x 40ea 0801 0000 0111 0x 40ea 0802 0000 0000 0x 40ea 0803 0x 40ea 0804 0000 0110 0x 40ea 0805 0x 40ea 0806 0101 1001 0x 40ea 0807 0100 1110 0x 40ea 0808 0101 0101 0x 40ea 0809 0x 40ea 080a 0100 0001 0x 40ea 080b 0x 40ea 080c 0100 1100 0x 40ea 080d 0x 40ea 080e 0x 40ea 080f 0000 0001 0x 40ea 0810 0x 40ea 0811 0100 1101 0x 40ea 0812 0100 1001 0x 40ea 0813 0101 0100 0x 40ea 0814 0x 40ea 0815 0101 0000 0x 40ea 0816 0100 1011 struct item{ int key; char name[7]; } ; main() { struct item a[5];   a[0].key = 1536; a[0].name[0]=‘Y’; a[0].name[1]=‘N’; a[0].name[2]=‘U’; a[0].name[3]=‘\0’;  a[1].key = 256; a[1].name[0]=‘M’; a[1].name[1]=‘I’; a[1].name[2]=‘T’; a[1].name[3]=‘\0’; … } a[0] a[0].key a[0].name a[0].name[0] a[0]. name[1] a[0]. name[2] a[0]. name[3] a[0]. name[4] a[0]. name[5] a[0]. name[7] a[1] a[1].key a[1].name a[1].name[0] a[1]. name[1] a[1]. name[2] a[1]. name[3] a[1]. name[4] a[1]. name[5] a[1]. name[7]

struct item{ int key; char name[7]; } ; main() { struct item a[5];   a[0].key = 1536; a[0].name[0]=‘Y’; a[0].name[1]=‘N’; a[0].name[2]=‘U’; a[0].name[3]=‘\0’;  a[1].key = 256; a[1].name[0]=‘M’; a[1].name[1]=‘I’; a[1].name[2]=‘T’; a[1].name[3]=‘\0’; … } a[0] a[0].key 1536 a[0]. name YNU a[1] a[1].key 256 a[1]. name MIT a[2] a[2].key 2049 a[2]. name UCLA a[3] a[3].key 87 a[3]. name TU/e a[4] a[4].key 1562 a[4]. name BYU

a[0] a[0] a[0].key 1536 a[0].key 87 a[0]. name YNU a[0]. name TU/e a[1] a[1] a[1].key 256 a[1].key 256 a[1]. name MIT a[1]. name MIT a[2] a[2] a[2].key 2049 a[2].key 1536 sort(a,5) a[2]. name UCLA a[2]. name YNU a[3] a[3] a[3].key 87 a[3].key 1562 a[3]. name TU/e a[3]. name BYU a[4] a[4] a[4].key 1562 a[4].key 2049 a[4]. name BYU a[4]. name UCLA 整列(sort)前 整列(sort)後

a[0] a[1] a[2] a[3] a[4] a[0].key 1536 a[1].key 256 a[2].key 2049 a[3].key 87 a[4].key 1562 a[0]. name YNU a[1]. name MIT a[2]. name UCLA a[3]. name TU/e a[4]. name BYU sort(a,5) a[0] a[1] a[2] a[3] a[4] a[0].key 87 a[1].key 256 a[2].key 1536 a[3].key 1562 a[4].key 2049 a[0]. name TU/e a[1]. name MIT a[2]. name YNU a[3]. name BYU a[4]. name UCLA