アルゴリズムとデータ構造 第4回 配列によるスタックとキュー.

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)
ISD実習E 2009年6月29日 LISPシステム入門 (第5回) 関数ポインタ eval システム関数.
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
データ構造とアルゴリズム 第10回 mallocとfree
基本情報技術概論(第4回) 埼玉大学 理工学研究科 堀山 貴史
2章 データ構造.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング演習(2組) 第12回
情報工学概論 (アルゴリズムとデータ構造)
アルゴリズムとデータ構造 第3回基本的なデータ構造(リスト) 2015/10/28 アルゴリズムとデータ構造 2015.
第6章 2重ループ&配列 2重ループと配列をやります.
情報理論2 第6回 小林 学 湘南工科大学 2011年11月15日 〒 神奈川県藤沢市辻堂西海岸1-1-25
プログラミング論 II 電卓,逆ポーランド記法電卓
データ構造とアルゴリズム 第13回 スタックとキュー
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
Stack & Queue & List 3.
アルゴリズムと データ構造 第4回 スタック・キュー.
第4回放送授業.
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
①データ構造 ②アルゴリズム ③プログラム言語 ④マークアップ言語
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
データ構造とアルゴリズム論 第2章 配列(構造)を使った処理
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
C言語講座 第3回 ポインタ、配列.
2009/10/16 いろいろなデータ構造 第3講: 平成21年10月16日 (金) 4限 E252教室 コンピュータアルゴリズム.
算法数理工学 第3回 定兼 邦彦.
データ構造とアルゴリズム 第5回 スタック ~ データ構造(2)~.
データ構造とアルゴリズム 第6回 キュー ~ データ構造(2)~.
プログラミング 4 記憶の割り付け.
データ構造と アルゴリズム第4回 知能情報学メジャー 和田俊和.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
アルゴリズムとデータ構造 補足資料5-2 「サンプルプログラムsetop.c」
第7回 プログラミングⅡ 第7回
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
プログラミング言語論 第13回 オブジェクト指向 情報工学科 篠埜 功.
アルゴリズムとデータ構造1 2005年7月1日
アルゴリズムとデータ構造1 2005年7月5日
2005年度 データ構造とアルゴリズム 第6回 「ハッシュ法を用いた探索」
配列変数とポインタ 静的確保と動的確保 ポインタ配列 2次元配列 時間計測 第1回レポートの課題
プログラミング 3 スタックとキュー.
明星大学 情報学科 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)
情報数理Ⅱ 第11章 データ構造 平成29年1月18日.
プログラミング 3 2 次元配列.
基本情報技術概論(第10回) 埼玉大学 理工学研究科 堀山 貴史
データ構造とアルゴリズム (第3回) 静岡大学工学部 安藤和敏
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
基本情報技術概論(第5回) 埼玉大学 理工学研究科 堀山 貴史
アルゴリズムとデータ構造1 2006年6月23日
待ち行列シミュレーション.
第11回放送授業.
ネットワーク・プログラミング Cプログラミングの基礎.
pf-6. スタック (Python プログラミング基礎を演習で学ぶシリーズ)
関数と再帰 教科書13章 電子1(木曜クラス) 2005/06/22(Thu.).
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
第10回 関数と再帰.
7.集合 7.1 集合とは [集合と要素] 関東の都道府県 群馬県 栃木県 要素 埼玉県 茨城県 東京都 千葉県 神奈川県
Presentation transcript:

アルゴリズムとデータ構造 第4回 配列によるスタックとキュー

本日の講義内容 配列とスタック 動的なメモリー確保によるスタック キュー

配列とスタック 整数のスタックを配列で作る。 #define SMAX 1000 int stackbase[SMAX]; int *stack=stackbase;  ここでは、大きさ1000のスタックを用意 して、データの挿入位置を示すポインタとして stackを定義した。

PUSH void push(int x){ if(stack>=stackbase+SMAX) stackerr(“Overflow”); *stack++=x; return ; }

POP int pop(void){ if(stack<=stackbase) stackerr(“Underflow”); return *--stack; } stackを-1してから、その中身を取り出している。

スタックの表示 void print_stack(void){ int *p=stack; int n=0; while(p>stackbase) printf("%d: %d\n",n++,*--p); }

動的なスタックの確保 int *stackbase; int *stack=stackbase; int stack_size; void init_stack(void){ stackbase= (int *)malloc(SMAX*sizeof(int)); stack=stackbase; stack_size=SMAX; }

スタックの拡張 void extend_stack(void){ int *p,new; new=stack_size*2; p=realloc(stackbase,new*sizeof(int)); if(p==NULL) exit(999); stack=p+(stack-stackbase); // need () because p+n is allowed stackbase=p; stack_size=new; }

キュー(queue) スタックはLIFO(Last In First Out) キューはFIFO(First In First Out) 線形リストまたは配列で実現できる。

キューの配列による実現 ring buffer として考える。つまり、配列を 1つの円循環とみなす。 int que[SMAX]; int *first=que,*next=que,*bound=que+SMAX; int total=0;

データの挿入(enque) void enque(int x){ if(total>=SMAX){ que_err("Overflow"); exit(999); } if(next>=bound) next=que; *next++=x; total++;

データの取り出し(deque) int deque(void){ if(total==0){ que_err("Underflow"); return -1; } if(first>=bound) first=que; total--; return *first++;