#include<stdio.h>  
#include<conio.h>  
#include<malloc.h>  
#define MAX 20  

char stack[MAX];  
int top = -1;  
char pop();  
void push(char item);  

int prcd(char symbol) {  
switch(symbol) {  
case '+':  
case '-':  
return 2;  
case '*':  
case '/':  
return 4;  
case '^':  
case '$':  
return 6;  
case '(':  
case ')':  
case '#':  
return 1;  
}  
}  

int isoperator(char symbol) {  
switch(symbol) {  
case '+':  
case '-':  
case '*':  
case '/':  
case '^':  
case '$':  
case '(':  
case ')':  
return 1;  
default:  
return 0;  
}  
}  

void convertip(char infix[],char prefix[]) {  
int i,symbol,j=0;  
char test[MAX];  

infix=strrev(infix);  
stack[++top]='#';  

for(i=0;iprcd(stack[top])) {  
push(symbol);  
}else {  
while(prcd(symbol)<=prcd(stack[top])) {  
prefix[j]=pop();  
j++;  
}  
push(symbol);  
}//end of else.  
}//end of else.  
}//end of else.  
}//end of for.  

while(stack[top]!='#') {  
prefix[j]=pop();  
j++;  
}  
prefix[j]='\0';//null terminate string.  
prefix=strrev(prefix);  
}  

int main() {  
char infix[20],prefix[20];  
clrscr();  
printf("Enter the valid infix string : ");  
gets(infix);  
convertip(infix,prefix);  
printf("The corresponding prefix string is : ");  
puts(prefix);  
getch();  
return 0;  
}  

void push(char item) {  
top++;  
stack[top]=item;  
}  

char pop() {  
char a;  
a=stack[top];  
top--;  
return a;  
}
INPUT
Enter the valid infix string : (a+b)*(c-d)

OUTPUT 
The corresponding prefix string is : *+ab-cd

Leave a Reply

Subscribe to Posts | Subscribe to Comments

All Notes on BCA

All Notes  on BCA
BCA all subjects notes

Total Pageviews

Translate

Powered by Blogger.

Copyright © All Notes on BCA