ورود

View Full Version : تبدیل پسوندی به میانوندی در c با استفاده از stack



powerboy2988
پنج شنبه 28 دی 1385, 14:19 عصر
سلام کسی سورس برنامه تبدیل پسوندی به میانوندی با استفاده از stack رو تو ++c یا هر زبانی داره؟

powerboy2988
پنج شنبه 28 دی 1385, 14:25 عصر
شرمنده سرش کردم پیدا شد
کدشو می زارم هرکی خواست استفاده کنه







Boolean bPrcd(charop1,char op2) {
if(op2==')')
return True;
if(op1=='(' || op2=='(')
return False;
switch(op1) {
case '+' :
case '-' :
if(op2=='+' || op2=='-')
return True;
else
return False;
break;
case '*' :
case '/' :
if(op2=='+' || op2=='-' || op2=='*' || op2=='/')
return True;
else
return False;
break;
case '^' :
if(op2=='^')
return False;
else
return True;
break;
} //end of switch
return False;
}
////////////////////////////////////////////////
Boolean bTransfer(String infix,String postfix) {
int i,pos=0;
char c;
char top_item;
Stack s;
s.Stack_Top=-1;
for(i=0;(c=infix[i])!='\0';i++) {
if(isdigit(c) || isalpha(c))
postfix[pos++]=c;
else {
while(!isEmpty(&s) && bPrcd(top(&s),c)) {
if(!bPop(&s,top_item))
return False;
if(top_item!='(')
postfix[pos++]=top_item;
else
break;
} //end of while
/*
if(c==')' && !bPop(&s,top_item))
return False;
if(c==')' && !bPop(&s,top_item))
return False;
*/
if(c!=')' && !bPush(&s,c))
return False;
} //end of eles
} //end of for
while(!isEmpty(&s)) {
if(!bPop(&s,top_item))
return False;
if(top_item!='(')
postfix[pos++]=top_item;
} //end of while
return True;
}