まず、スタックを実現するために必要なデータ構造を定義します。以下のコード例では、配列を使用してスタックを実装します。
#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言語で配列を使用してスタックを実装し、ユーザーからの入力を受け付ける方法の例です。このコードを基にして、さまざまな応用や改良を行うことができます。