Infix ke Prefix

Berikut ini saya akan berikan sebuah program dengan menggunakan Visual Studio, Silah kan copas program terseut dan pelajari lebih lanjut..
List Program infix ke prefix
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string.h>
#define MAX 20
using namespace std;
void convertip(char infix[],char prefix[]);
int main()
{
char infix[20],prefix[20];
cout<<"Masukan INFIX:n";
cin>>infix;
convertip(infix,prefix);
cout<<"HASIL DALAM PREFIX :n"<<prefix;
getch();
return 0;
}
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;i< strlen(infix);i++) {
symbol=infix[i];
if(isoperator(symbol)==0) {
prefix[j]=symbol;
j++;
}
else
{
if(symbol==')') {
push(symbol);
}else if(symbol=='(') {
while(stack[top]!=')') {
prefix[j]=pop();
j++;
}
pop();//pop out (.
}else {
if(prcd(symbol)>prcd(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]='�';//null terminate string.
prefix=strrev(prefix);
}
void push(char item) {
top++;
stack[top]=item;
}
char pop() {
char a;
a=stack[top];
top--;
return a;
}
0 komentar on "Infix ke Prefix"