File tree 1 file changed +70
-0
lines changed 1 file changed +70
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Give an input Infix Expression, write the program to convert the given infix expression to postfix expression using Stack Operations.
2
+
3
+ // Input : Infix Expression
4
+
5
+ // Output : Postfix Expression
6
+
7
+ #include <stdio.h>
8
+ #include <string.h>
9
+ char s [20 ];
10
+ int top = -1 ;
11
+ int pri (char c )
12
+ {
13
+ switch (c )
14
+ {
15
+ case '+' :
16
+ case '-' :return 1 ;
17
+ break ;
18
+ case '*' :
19
+ case '/' :return 2 ;
20
+ break ;
21
+ default : return 0 ;
22
+ }
23
+ }
24
+ void push (char c )
25
+ {
26
+ top ++ ;
27
+ s [top ]= c ;
28
+ }
29
+ char pop ()
30
+ {
31
+ int a = top ;
32
+ top -- ;
33
+ return s [a ];
34
+ }
35
+ int main ()
36
+ {
37
+ char str [20 ];
38
+ scanf ("%[^\n]s" ,str );
39
+ for (int i = 0 ;i < strlen (str );i ++ )
40
+ {
41
+ if (str [i ]== '+' || str [i ]== '-' || str [i ]== '*' || str [i ]== '/' )
42
+ {
43
+ if (top == -1 )
44
+ push (str [i ]);
45
+ else
46
+ {
47
+ if (pri (s [top ])>=pri (str [i ]))
48
+ {
49
+ printf ("%c" ,pop ());
50
+ push (str [i ]);
51
+ }
52
+ else
53
+ push (str [i ]);
54
+ }
55
+ }
56
+ else if (str [i ]== '(' )
57
+ push (str [i ]);
58
+ else if (str [i ]== ')' )
59
+ {
60
+ while (s [top ]!= '(' )
61
+ printf ("%c" ,pop ());
62
+ pop ();
63
+ }
64
+ else if (str [i ]>='a' && str [i ]<='z' )
65
+ printf ("%c" ,str [i ]);
66
+ }
67
+ while (top >=0 )
68
+ printf ("%c" ,pop ());
69
+ return 0 ;
70
+ }
You can’t perform that action at this time.
0 commit comments