アルゴリズムとデータ構造 第2回 線形リスト(復習).

Slides:



Advertisements
Similar presentations
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第11回構造体. プログラミング入門2 2 構造体 5 人分のサッカー選手データ 全てのデータを関数に渡して,処理する場合 char name[5][256]; int assist[5]; int score[5]; void func( char.
Advertisements

C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
データ構造とアルゴリズム 第10回 mallocとfree
プログラミング入門2 ポインタについて補足 構造体 第11回 芝浦工業大学情報工学科 青木 義満、篠埜 功
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
アルゴリズムとデータ構造 2011年6月13日
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
第4回放送授業.
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 プログラミング入門2 芝浦工業大学情報工学科 青木 義満
プログラミング論 関数ポインタ と 応用(qsort)
プログラミング言語入門 手続き型言語としてのJava
関数とポインタ 値呼び出しと参照呼び出し swapのいろいろ 関数引数 数値積分
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
iioLoadFile()とiioMallocImageBuffer()の補足
iioLoadFile()とiioMallocImageBuffer()の補足
アルゴリズムとデータ構造1 2006年6月16日
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング 3 構造体(2).
プログラミング入門2 第11回 情報工学科 篠埜 功.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
Cプログラミング演習 第10回 二分探索木.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
フロントエンドとバックエンドのインターフェース
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
構造体と共用体.
データ構造とアルゴリズム 第11回 リスト構造(1)
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング 3 2 次元配列.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング Cプログラミングの基礎.
第5回 プログラミングⅡ 第5回
プログラミング論 構造体
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月17日
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
情報処理Ⅱ 小テスト 2005年2月1日(火).
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
知能情報工学演習I 第9回(後半第3回) 課題の回答
C言語講座第5回 2017 構造体.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
高度プログラミング演習 (10).
Presentation transcript:

アルゴリズムとデータ構造 第2回 線形リスト(復習)

本日の講義内容 Cの変数 ポインタ 構造体 線形リスト 他

Cの変数とポインタ int x で何がおきるのか *と& mallocは何故必要か typedef structure ポインタによる連結 ポインタによる連結  線形リスト

int xで何が起きるのか? メモリー(4バイト=32bit)が確保される。 そのアドレスは &xで知ることができる。 例 int *p=&x; printf(“%x %d\n”,p,*p);

*と& *x xをアドレス(ポインタ)とみなしてそのアドレスの内容を取得する。xにはさまざまな形が許されるが、その値はある型のポインタでないといけない。 &x xは一般に変数名である。xが格納されているアドレス(ポインタ)を取得する。

例 int x=1000,y; y=*x; エラー xはポインタではない。 y=*(int *)x; コンパイラは通る。   実行時エラー(segmentation error)になる。 1000番地は、このプロセスの使用領域ではないから。

ポインタを引数にする ポインタを引く数にすることにより、もとのデータを変更することができる。(アドレス渡し) 構造体を処理するときは、ポインタで渡すのが原則である。

構造体の生成 struct student{ int age; char name[20]; }; struct student s; これは、1個の構造体を作り、その名前をsとする。

mallocによる構造体の生成 struct student *new_st{ struct student *p; p=malloc(sizeof(struct student)); return p; }; これは、1個の構造体を新しく作り、そのアドレスを返す関数である。

構造体のメンバーの変更 void change_st(struct student *st, int x, char *name){ st-> age=x; strcpy(name,st->name); };

typedef typedefは、新しい型を定義する。 typedef struct _student { int age; char name[20]; struct _student *next; }stu; typedef stu *stuptr;

typedefの効果 struct _student s; -> stu s; struct _student *p; stuptr p; のように、簡潔な表現ができる。

線形リストを作る struct _student *next; に注目しよう。これは、次の_student構造体 されているのである。 つまり、今 見ているカードのポインタ(アドレス)をp とすると p->next が次のカードのポインタを表す。

データ構造 問題をどのように表現するか? 良い表現は、アルゴリズムをわかりやすくしたり、より効率的にする。

代表的データ構造 配列(1次元、2次元、...)‏ リスト 2分木 ハッシュ表 グラフ

C言語 構造体  リストなどの実現 共用体 ポインタ

トランプのゲームを作りたい カードの山 方法1 int card[53]; 方法2 53個の線形リストにする。 構造体{種類、数} 簡単な例 トランプのゲームを作りたい カードの山 方法1 int card[53]; 方法2 53個の線形リストにする。 構造体{種類、数}

シャッフルしたい。-> 乱数の利用 手持ちのカードを整理したい-> ソート 最良の捨て札を見つけたい-> サーチ さらに シャッフルしたい。-> 乱数の利用 手持ちのカードを整理したい-> ソート 最良の捨て札を見つけたい-> サーチ

他の言語 LISP リスト構造が最初からシステムに入っている。 Prolog パターンマッチングによる探索機能が がある。 Java   オブジェクトによるデータ表現ができ る。抽象クラス(構造体)。 Pascal アルゴリズム記述でよく使われた。

ノートパソコン 他学系などの学生には MACBOOKの貸し出しなどをします。 OS MACOSX, Linux(Fedora)  他学系などの学生には  MACBOOKの貸し出しなどをします。 OS MACOSX, Linux(Fedora)   Editor Emacs, vi コンパイラ gcc ( cc)‏

WindowsのC は基本的に禁止 VC, Borland Cなどは禁止 UNIX C と一部互換でない。 原理がわかりにくい。 コマンドの意識 GUIも実際はコマンドの実行をしている。

質問など 講義・演習では積極的に質問すること。 プログラミングは慣れである。 正しく動作するプログラムは、自分の財産。 なぜそうなるのか、よく考えること。 何をしたいのか、どうすればよいのか?何が必要か?