改善点はありますか?
#include <stdio.h> #include <string.h> #define MAX 100 int stack[MAX]; //stackは配列を利用して実現 int top = 0; //stackは最上部(データ実際に格納する場所) int push(int x); int pop(); //配列を利移用して、スタックデータ構造を実現する // push : データの格納 int push(int x){ if(top == MAX) return -1; //満杯なら-1をエラーとして返す stack[top] = x; //データの格納 top++; //次に格納する位置へtopを移動(1つ増やす) return 1; } //pop : データ取り出し int pop(){ --top; //現在データが格納されているところにtopを移す return stack[top]; //最上部のデータを取り出して返す } //operator : 演算子 int operator(mozi){ int a,b; switch(mozi){ case '+': a=pop(); b=pop(); push(a+b); break; case '-': a=pop(); b=pop(); push(a-b); break; case '*': a=pop(); b=pop(); push(a*b); break; case '/': a=pop(); b=pop(); push(a/b); break; } } int main(){ char *p_push = "push"; char *p_pop = "pop"; char *p_operator = "operator"; char input[10]; int su,mozi; for(int i=0; i<10; i++){ printf("Input operation: push/pop/operator:"); scanf("%s", input); if(strcmp(input, p_push) == 0){ printf("Input data : "); scanf("%d", &su); push(su); }else if(strcmp(input, p_pop) == 0){ printf("popped data : %d\n",pop(su)); }else if(strcmp(input, p_operator) == 0){ printf("Input data : "); scanf("%s", &mozi); operator(mozi); }else{ printf("Stack is empty! "); break; } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/12 13:09