スタックとキュー
スタック(LIFO)とキュー(FIFO)のデータ構造および用途を理解します
「スタックとキュー」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。
Cのスタックとキュー
Cのスタックとキュー
スタックとキューは、データの格納と管理に使用される線形データ構造です。
このレッスンでは、次のことを学びます。
- スタックの仕組み(LIFO - 後入れ先出し)。
- キューの仕組み(FIFO - 先入れ先出し)。
- Cでスタックとキューを実装する方法。

スタックとは
スタックとは
スタックは、後入れ先出し(LIFO)の原則に従います。
操作:
- プッシュ - 要素を最上部に追加します。
- ポップ - 最上部の要素を削除します。
- ピーク - 要素を削除せずに最上部の要素を確認します。
例:スタックの実装
例:スタックの実装
このプログラムでは、配列を使用したスタック操作を示します。
#include <stdio.h>
#define MAX 5
int stack[MAX], top = -1;
void push(int value) {
if (top == MAX - 1) {
printf("Stack Overflow\n");
} else {
stack[++top] = value;
}
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
} else {
return stack[top--];
}
}
int main() {
push(10);
push(20);
printf("Popped: %d\n", pop());
return 0;
}キューとは
キューとは
キューは、先入れ先出し(FIFO)の原則に従います。
操作:
- エンキュー - 要素を末尾に追加します。
- デキュー - 先頭の要素を削除します。
- ピーク - 要素を削除せずに先頭の要素を確認します。
例:キューの実装
例:キューの実装
このプログラムでは、配列を使用したキュー操作を示します。
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if (rear == MAX - 1) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
queue[++rear] = value;
}
}
int dequeue() {
if (front == -1 || front > rear) {
printf("Queue Underflow\n");
return -1;
} else {
return queue[front++];
}
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}循環キュー
循環キュー
循環キューは、空いた領域を再利用することで、通常のキューの制限を解消します。
操作は変わりませんが、配列の末尾から先頭へ循環します。
例:循環キュー
例:循環キュー
このプログラムでは、循環キューの実装を示します。
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if ((rear + 1) % MAX == front) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
rear = (rear + 1) % MAX;
queue[rear] = value;
}
}
int dequeue() {
if (front == -1) {
printf("Queue Underflow\n");
return -1;
}
int data = queue[front];
if (front == rear) {
front = rear = -1;
} else {
front = (front + 1) % MAX;
}
return data;
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}スタックとキューの用途
スタックとキューの用途
スタックは、次の用途で使用されます。
- 関数呼び出しの管理(再帰)。
- 元に戻す/やり直し操作。
- 式の評価。
キューは、次の用途で使用されます。
- オペレーティングシステムでのタスクのスケジューリング。
- Webサーバーでのリクエストの管理。
- ネットワークでのデータ転送。
まとめ
まとめ
このレッスンでは、次のことを学びました。
- スタックとキューの仕組み。
- スタックとキューの操作を実装する方法。
- スタックとキューの用途。
次は、Cの木構造とグラフについて見ていきます。

よくある質問
「スタックとキュー」レッスンは無料ですか?
はい。「スタックとキュー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全3レッスンが含まれています。
「スタックとキュー」で何を学びますか?
スタック(LIFO)とキュー(FIFO)のデータ構造および用途を理解します ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「スタックとキュー」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC Academyレッスンでコードを書いて実行できますか?
はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。