0Pricing
C Academy · レッスン

スタックとキュー

スタック(LIFO)とキュー(FIFO)のデータ構造および用途を理解します

「スタックとキュー」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。

Cのスタックとキュー

Cのスタックとキュー

スタックとキューは、データの格納と管理に使用される線形データ構造です。

このレッスンでは、次のことを学びます。

  • スタックの仕組み(LIFO - 後入れ先出し)。
  • キューの仕組み(FIFO - 先入れ先出し)。
  • Cでスタックとキューを実装する方法。
スタックとキュー — イラスト1

スタックとは

スタックとは

スタックは、後入れ先出し(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の木構造とグラフについて見ていきます。

スタックとキュー — イラスト10

よくある質問

「スタックとキュー」レッスンは無料ですか?

はい。「スタックとキュー」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 連結リスト
  2. スタックとキュー
  3. 木構造とグラフ
← C Academyに戻る