プログラミング 3 スタックとキュー.

Slides:



Advertisements
Similar presentations
シミュレーション演習 G. 総合演習 ( Mathematica 演 習) システム創成情報工学科 テキスト作成: 藤尾 光彦 講義担当: 尾下 真樹.
Advertisements

初年次セミナー 第8回 データの入力.
Generic programming と STL
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
ヒープソートの演習 第13回.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
ファーストイヤー・セミナーⅡ 第8回 データの入力.
データ構造とアルゴリズム 第10回 mallocとfree
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第4章 配 列 オブジェクト指向Javaプログラミング入門 近代科学社©2008 Toru Kato Masahiro Higuchi
情報工学概論 (アルゴリズムとデータ構造)
情報システム基盤学 基礎1 アルゴリズムとデータ構造
オペレーティングシステムJ/K 2004年11月4日
第6章 2重ループ&配列 2重ループと配列をやります.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
プログラミング論 II 電卓,逆ポーランド記法電卓
データ構造とアルゴリズム 第13回 スタックとキュー
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
第4章 空間解析 2.ネットワーク分析 (3) ネットワーク構造分析
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
ヒープソートの復習.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
大岩 元 慶応大学環境情報学部 数式の表現と日本語 大岩 元 慶応大学環境情報学部
EVENT プログラミングのスタイル 手続き型: ある決められた場所から開始され, その後は純粋に上から下に流れて行く方式. 実行したいことを, 順番に記述してゆく. 逐次処理形式コーディングの方法である。 今までの授業(情報処理2や3)で 行ってきたプログラミングの演習 bcc32やmake 手続き型.
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
第10章 これはかなり大変な事項!! ~ポインタ~
アルゴリズムとデータ構造1 2005年7月1日
アルゴリズムとデータ構造1 2009年6月29日
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング基礎B 文字列の扱い.
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
プログラミング 4 木構造とヒープ.
明星大学 情報学科 2012年度 後期   情報技術Ⅱ   第8回
アルゴリズムとデータ構造 2011年7月8日課題の復習
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
基本情報技術概論I (第4回) 埼玉大学 理工学研究科 堀山 貴史
6.データ構造入門 6-1.連結リスト(Linked List) 6-2.スタック(Stack) 6-3.キュー(Queue)
データ構造とアルゴリズム 第11回 リスト構造(1)
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
プログラミング 3 2 次元配列.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
数式の表現と日本語 データ構造とプログラミング(6)
アルゴリズムからプログラムへ GRAPH-SEARCH
ポインタとポインタを用いた関数定義.
アルゴリズムとプログラミング (Algorithms and Programming)
オペレーティングシステムJ/K (管理のためのデータ構造)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
第8回 データを収納する (スタックとキュー)
ヒープソートの復習 第12回.
第11回放送授業.
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング Cプログラミングの基礎.
pf-6. スタック (Python プログラミング基礎を演習で学ぶシリーズ)
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
Presentation transcript:

プログラミング 3 スタックとキュー

データ構造 データ構造:コンピュータがデータを扱うときに,扱 いやすくなるように加工したもの 今回扱うスタック(stack)とキュー(queue)は, データを一時的に蓄えるバッファと呼ばれるもののひ とつ

スタック(1) 「入れる」「出す」の操作を持つバッファ トレイの山を想像するとよい 入れる:プッシュ(push) 出す:ポップ(pop) トレイの山を想像するとよい 入れられた(プッシュされた)データは山のてっぺんに積ま れる 取り出し(ポップ)は山のてっぺんに対して行う 最後に入れたものが最初に出てくる:Last-In First-Out(LIFO)

スタック(2) 3 4 ↓ ↓ ↓ ↑ ↓ ↑ 3 4 2 2 2 2 2 1 1 1 1 1 1 1をプッシュ 2をプッシュ 3をプッシュ ポップ 4をプッシュ ポップ 3 4 2 2 2 2 2 1 1 1 1 1 1

スタックの実装(1) 簡易なものは配列で実装できる 必要な変数宣言 int stack[STACKSIZE]; int sp = 0; スタック本体となる配列 スタックに何個データが入っているかを保持する変数(ス タックポインタ) 必要な変数宣言 int stack[STACKSIZE]; int sp = 0; STACKSIZE はスタックの容量(大きさ)を定義した記号定 数

スタックの実装(2) ↓ 2 2 X X X プッシュ スタックポインタの位置に 値を入れる スタックポインタを 1 増 やす sp→

スタックの実装(3) 2 ↑ 2 2 X X X ポップ スタックポインタを 1 減 らす スタックポインタの位置の 値を返す sp→

キュー(1) 「入れる」「出す」の操作を持つバッファ レジや ATM の待ち行列を想像するとよい 入れる:エンキュー(enqueue) 出す:デキュー(dequeue) レジや ATM の待ち行列を想像するとよい 入れられた(エンキューされた)データは列の末尾に入れら れる 取り出し(デキュー)は列の先頭に対して行う 最初に入れたものが最初に出てくる:First-In First-Out(FIFO)

キュー(2) 1 ← 1 をエンキュー 1 2 ← 2 をエンキュー 1← 2 デキュー 2 3 ← 3 をエンキュー 2← 3 デキュー

キューの実装(1) 簡易なものは配列で実装できる キュー本体となる配列 キューの先頭・末尾を覚える変数(またはキューの先頭と データの個数を覚える変数) 必要な変数宣言 int queue[QUEUESIZE]; int head = 0, tail = 0; QUEUESIZE はキューの容量(大きさ)を定義した記号定数

キューの実装(2) 2 3 2 3 4 ← 2 3 4 エンキュー キューの末尾位置に値を代入する キューの末尾の要素 番号を 1 増やす キューの末尾の要素 番号を 1 増やす ↓head ↓tail 2 3 ↓head ↓tail 2 3 4 ← ↓head ↓tail 2 3 4

キューの実装(3) 2 3 4 2← 3 4 ← 3 4 デキュー キューの先頭位置の値を取り出す キューの先頭の要素 番号を 1 増やす キューの先頭の要素 番号を 1 増やす ↓head ↓tail 2 3 4 ↓head ↓tail 2← 3 4 ← ↓head ↓tail 3 4

スタックとキュー 使用頻度が高く,実装が容易なのはスタックのほう 格納できるデータ量に事実上制限がない実装もある (難しい) キューについては,リングバッファという実装方法もある