ポインタ管理による O(1) 操作
スタックとキューは、要素の追加・削除をO(1) (瞬時)で行うことができる高速なデータ構造です。その秘密は「ポインタ(目印)」の管理にあります。
1. スタック (Stack) - LIFO
スタックは「TOP」という1つのポインタだけを持ちます。
- PUSH (追加): TOPポインタを1つ上にずらし、そこにデータを入れます。
- POP (削除): TOPポインタが指しているデータを消し、TOPを1つ下にずらします。
- 他のデータを探したり移動させたりする必要がないため、常にO(1)で動作します。
2. 循環キュー (Ring Buffer) - FIFO
キューは「FRONT (先頭)」と「REAR (末尾)」の2つのポインタを持ち、メモリを円状(リングバッファ)として管理します。
- ENQUEUE (追加): REARポインタを時計回りに1つ進め、その場所にデータを入れます。
- DEQUEUE (削除): FRONTポインタが指すデータを取り出し、FRONTを時計回りに1つ進めます。
- 最後まで到達しても最初(インデックス0)に戻るため、配列全体のシフト(移動)が一切不要になり、常にO(1)で高速に動作します。