データ構造とアルゴリズム 第13回 スタックとキュー

Slides:



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

Generic programming と STL
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
データ構造とアルゴリズム 第10回 mallocとfree
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
2章 データ構造.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報工学概論 (アルゴリズムとデータ構造)
情報システム基盤学 基礎1 アルゴリズムとデータ構造
アルゴリズムとデータ構造 第3回基本的なデータ構造(リスト) 2015/10/28 アルゴリズムとデータ構造 2015.
プログラミング言語論 第10回 オブジェクト指向 情報工学科 篠埜 功.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
プログラミング論 II 電卓,逆ポーランド記法電卓
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す.
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
データ構造とプログラミング技法 (第2回) ー線形構造ー.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
第11回ネットワークプログラミング 中村 修.
アルゴリズムとデータ構造 2011年7月4日
アルゴリズムとデータ構造 2012年6月28日
アルゴリズムとデータ構造 2011年6月27日
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
データ構造とアルゴリズム (第2回) ー線形構造ー.
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
プログラミング 4 記憶の割り付け.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
アルゴリズムとデータ構造勉強会 第6回 スレッド木
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第12回 オブジェクト指向 情報工学科 篠埜 功.
プログラミング言語論 第13回 オブジェクト指向 情報工学科 篠埜 功.
アルゴリズムとデータ構造1 2005年7月1日
アルゴリズムとデータ構造1 2009年6月29日
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
Cプログラミング演習 第10回 二分探索木.
アルゴリズムとデータ構造1 2005年7月5日
プログラミング 3 スタックとキュー.
算法数理工学 第8回 定兼 邦彦.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
アルゴリズムとデータ構造 2011年7月8日課題の復習
簡易データベース 情報画像工学実験 I : 実験2 担当:関屋大雄(工学部1号棟515室)
スタックとキュー データ構造とプログラミング (第5回).
基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
データ構造とアルゴリズム 第11回 リスト構造(1)
算法数理工学 第7回 定兼 邦彦.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
アルゴリズムからプログラムへ GRAPH-SEARCH
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造1 2006年6月23日
アルゴリズムとデータ構造 2013年7月1日
アルゴリズムとデータ構造 2013年7月8日
アルゴリズムとデータ構造1 2009年6月15日
アルゴリズムとデータ構造 補足資料11-3 「線形リストのオペレータ」
アルゴリズムとデータ構造 2010年6月17日
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2012年7月9日
Presentation transcript:

データ構造とアルゴリズム 第13回 スタックとキュー データ構造とアルゴリズム 第13回 スタックとキュー 静岡大学工学部 安藤 和敏 2011.07.08

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習

複数の仕事やデータの処理の順番 あなたは図書館で勉強していた.そこへ,あなたの親友がやってきて恋愛相談に乗って欲しいと声をかけられた.返事をしようとしていたら,親から携帯に電話がかかってきた. 図書館で勉強する. 親友の恋愛相談に乗る. 携帯電話にでる. (C) → (B) → (A) の順番で仕事をするのが普通.

複数の仕事やデータの処理の順番 あなたはファーストフード店で注文を受けるバイトをしている.レジの前には3人の客が並んでいる.あなたはこの3人の客から, チーズバーガーとコーラ てりやきバーガーとコーヒー フィッシュバーガーとコーヒー という順番で注文を受けた. (A) → (B) → (C) の順番で仕事をする.

複数の仕事やデータの処理の順番 処理要求の順番が遅いものから処理を済ませる. 処理要求の順番が早いものから処理を済ませる. アルゴリズムの分野では,(1) の処理方法を LIFO (Last In First Out の略,ライフォ,リフォと読む)と呼び,(2) の処理をFIFO (First In First Out の略,ファイフォ,フィフォと読む)と呼ぶ. (1) のLIFO はスタック (stack) によって,(2) のFIFO はキュー (queue) によって実現される.

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 実習

スタックみたいなもの スピンドルケース入りCD 本の山

スタックの概念図 格納 取り出し 6 3 2 4 1 5

スタックに対する操作(Push) Push(x): スタックにデータ x を格納する. x 2 4 1

スタックに対する操作(Pop) Pop(): スタックからデータの取り出しを行い,取り出したデータを返す. 2 4 1

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習

リスト構造を用いたスタックの実装 格納 取り出し 2 4 1 root 2 4 1

関数 Push の説明 2 4 1 x void Push(int x) { struct CELL *newcell; newcell = (struct CELL *) malloc(sizeof(struct CELL)); newcell->data = x; newcell->next = root; root = newcell; } root 2 4 1 x newcell

関数 Pop の説明 1 4 2 int Pop(void) { int x; struct CELL *temp; if (root == NULL) { printf("Error: Stack is empty.\n"); return; } x = root->data; temp = root; root = root->next; free(temp); return x; temp 1 4 2 root

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習

キューみたいなもの ラーメン屋

キューの概念図 3 5 1 4 2 取り出し 格納

キューに対する操作 (Enqueue) Enqueue(x): キューにデータ x を格納する. x 1 4 2

キューに対する操作 (Dequeue) Dequeue(): キューからデータの取り出しを行い,取り出したデータを返す. 1 4 2

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習

リスト構造を用いたキューの実装 1 4 2 取り出し 格納 tail head 1 4 2

関数 Dequeue の説明 1 4 2 int Dequeue(void) { int x; struct CELL *temp; if (head == NULL) { printf("Error: Queue is empty.\n"); return; } x = head->data; temp = head; head = head->next; free(temp); if(head==NULL) tail=NULL; return x; temp tail 1 4 2 head

関数 Enqueue の説明 2 4 1 x void Enqueue(int x) { struct CELL *newcell; newcell = (struct CELL *) malloc(sizeof(struct CELL)); newcell->data = x; newcell->next = NULL; if(tail!=NULL) tail->next = newcell; tail = newcell; if(head==NULL) head = newcell; } head 2 4 1 tail x newcell

目次 復習 データ処理の2つの順番 スタックの概念 リスト構造を用いたスタックの実装 キューの概念 リスト構造を用いたキューの実装 演習