C言語における配列を用いたスタックの実装とユーザー入力


まず、スタックを実現するために必要なデータ構造を定義します。以下のコード例では、配列を使用してスタックを実装します。

#include <stdio.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int item) {
    if (top >= MAX_SIZE - 1) {
        printf("スタックが満杯です。\n");
    } else {
        stack[++top] = item;
        printf("%d をスタックに追加しました。\n", item);
    }
}
int pop() {
    if (top < 0) {
        printf("スタックが空です。\n");
        return -1;
    } else {
        int item = stack[top--];
        printf("%d をスタックから取り出しました。\n", item);
        return item;
    }
}
int main() {
    int choice, item;
    while (1) {
        printf("1. push\n");
        printf("2. pop\n");
        printf("3. 終了\n");
        printf("選択してください: ");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                printf("追加する値を入力してください: ");
                scanf("%d", &item);
                push(item);
                break;
            case 2:
                pop();
                break;
            case 3:
                return 0;
            default:
                printf("無効な選択肢です。\n");
        }
    }
    return 0;
}

上記のコードでは、push関数はスタックに要素を追加し、pop関数はスタックから要素を取り出します。スタックが満杯の場合や空の場合には、適切なメッセージが表示されます。

メイン関数では、ユーザーに対してメニューを表示し、選択に応じて要素の追加や取り出しを行います。ユーザーが終了を選択するまで、無限ループが続きます。

このコードを実行すると、ユーザーは値を追加したり取り出したりすることができます。スタックが満杯の場合や空の場合には適切なメッセージが表示されるため、安全に操作を行うことができます。

以上が、C言語で配列を使用してスタックを実装し、ユーザーからの入力を受け付ける方法の例です。このコードを基にして、さまざまな応用や改良を行うことができます。