contoh ilustrasi push
kotak merupakan ibarat dari nilai kemudian ada garis merah sebagai tempat penyimpanannya
contoh ilustrasi pop
pada pop nilai yang berada pada tumpukan paling atas di keluarkan dan berhenti sampai tidak ada nilai pada tumpukan
#include "stdio.h"; #include "ctype.h"; #include "stdlib.h" #define SIZE 40 int stack[SIZE]; int top=-1; int pop(); void push(int); int evaluate(int , int o,char ); void push(int n) { if(top == SIZE-1) { printf("Stack is full\n"); return; } else { top=top+1; stack[top]=n; printf("Pushed element is %d\n",n); } } int pop() { int n; if(top == -1) { printf("Stack is empty\n"); return; } else { n=stack[top]; top=top-1; printf("The poped element is %d\n",n); return(n); } } int evaluate(int op1, int op2,char ch) { printf("op1=%d op2=%d ch=%c\n",op1,op2,ch); int n; if (op1 < op2) { n=op1; op1=op2; op2=n; } if(ch=='+') n=op1+op2; else if(ch=='-') n=op1-op2; else if(ch=='*') n=op1*op2; else if(ch=='/') n=op1/op2; else if(ch=='%') n=op1%op2; else { printf("The operator is not identified\n"); exit(0); } printf("n=%d\n",n); return(n); } int main() { char str[50],ch,ch1; int i=0,n,op1,op2; printf("Enter the Postfix string\n"); scanf("%s",str); ch=str[i]; while(ch!='\0') { printf("%c",ch); if(ch=='1' || ch=='2' || ch=='3' || ch=='4' || ch=='5')// if(isdigit(ch)) { n=ch-'0'; push(n); } else { op1=pop(); op2=pop(); n=evaluate(op1,op2,ch); push(n); } ch=str[++i]; } printf("%d\n",pop()); return; }
Posting Komentar