-
Notifications
You must be signed in to change notification settings - Fork 0
/
infixtopostfix.c
95 lines (89 loc) · 1.77 KB
/
infixtopostfix.c
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
struct ArrayStack{
int top;
int capacity;
char *array;
};
struct ArrayStack* createstack(int cap){
struct ArrayStack *s;
s=(struct ArrayStack *)malloc(sizeof(struct ArrayStack));
s->top=-1;
s->capacity=cap;
s->array=(char *)malloc(sizeof(char)*cap);
return s;
}
int isFull(struct ArrayStack *s)
{
if(s->top==s->capacity-1)
{
printf("stack is full or stack over flow");
return 1;
}
return 0;
}
int isEmpty(struct ArrayStack *s)
{
if(s->top==-1)
{
printf("underflow");
return 1;
}
return 0;
}
void push(struct ArrayStack *s,char item)
{
if(!isFull(s))
{
s->top++;
s->array[s->top]=item;
}
}
char pop(struct ArrayStack *s)
{ char item;
if(!isEmpty(s))
{
item=s->array[s->top];
s->top--;
return item;
}
return 0;
}
int main()
{
struct ArrayStack *temp;
char ch[20],p[20];
int i;
for(i=0,i<=18;i++)
{
scanf("%c",&ch[i]);
scanf("\n");
}
ch[19]=')';
push(temp,'(');
for(i=0;i<=18,i++)
{
if(isalnum(ch[i]))
{
p[i]=ch[i];
}
if(ch[i]=='+' || ch[i]=='-' || ch[i]=='*' || ch[i]='/')
{
}
if(ch[i]=='(')
{
push(temp,a[i]);
}
if(ch[i]==')')
{
while(ch[i]!='(')
{
p[i]=pop(temp);
i++;
}
pop(temp);
}
}
return 0;
}