-
Notifications
You must be signed in to change notification settings - Fork 0
/
Stack_Applications.cpp
76 lines (61 loc) · 1.38 KB
/
Stack_Applications.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Stack Applications for Prefix and Postfix expressions
//
# include <iostream>
# include <stdio.h>
# include <string.h>
struct A{
int number;
struct A* next;
};
struct A* top=NULL;
void push(int x){
//need to add a new element
struct A* node= (struct A*)malloc(sizeof(A));
node->number=x;
node->next=top;
top=node;
printf("Pushed %d\n",x);
}
int pop(){
if (top==NULL){
printf("empty stack!\n");
return 0;
}
else{
struct A* temp=top;
int a= int(top->number);
free(temp);
top=top->next;
printf("Popped %d\n",a);
return a;
}
}
void seek(){
printf("STack top: %d\n",top->number);
}
int main(){
//defining our postfix expression
char postfix[]="23+9*5/";
printf(postfix);
for(int i=0;i<strlen(postfix);i++){
if (isalnum(postfix[i]) ){
push(int(postfix[i])-48);
}
else{
int a=pop();
int b=pop();
if (postfix[i]=='+'){
push(a+b);
}
else if (postfix[i]=='-'){
push(b-a);
}
else if (postfix[i]=='*'){
push(a*b);
}
else{
push(b/a);
}
}}
seek();
}