アルゴリズムとデータ構造

アルゴリズムと
データ構造
第4回
スタック・キュー
スタック

スタックとは
 データを一時的に蓄える際利用するデータ構造
 最後に入れたものが最初に取り出される:後入れ
先出し(LIFO)
 関数呼び出しや再帰アルゴリズムの非再帰実現
などにも使用
スタック

スタックの詳細
 データ操作
データを入れる:プッシュ(push)
 データを取り出す:ポップ(pop)

 スタックの上と下
プッシュ、ポップが行われる側:頂上(top)
 その反対側:底(bottom)

スタック

スタックの動き
push
pop
3
2
1
top
3
3
2
bottom
1
スタック

スタックの実現
push
pop
29
28
15
7
5
ptr
ptr
ptr
ptr
5
7
15
29
28
28
ptr
キュー

キューとは
 データを一時的に蓄える際利用するデータ構造
 最初に入れたものが最初に取り出される:先入れ
先出し(FIFO)
 待ち行列
キュー

キューの詳細
 データ操作
データを入れる:エンキュー(enqueue)
 データを取り出す:デキュー(dequeue)

 キューの上と下
データを取り出す側:先頭(front)
 その反対側:末尾(rear)

キュー

キューの動き
enqueue
dequeue
front
1
2
3
3
2
1
rear
1
キュー

キューの実現(配列版)
enqueue
dequeue
29
28
15
7
5
ptr
ptr
ptr
ptr
5
7
15
29
28
5
ptr
キュー

キューの実現(リングバッファ版)
enqueue
dequeue
rear rear rear
29
28
15
7
5
28
29
front front rear rear rear
68
68
39
5
7
15