#include<stdio.h>
#include<string.h>
#define STACK_SIZE 20

int isStackEmpty(char stack[],char *top);
int isStackFull(char stack[],int n,char *top);
int push(char stack[],int n,char *top,char data);
int pop(char stack[],char *top,char *data);
void printStack(char stack[],char top);

int main(void)
{

char postfix[]="((A+(B*C))-D)";

char stack[STACK_SIZE];

char data,top=-1;

int i,len;


len=strlen(postfix);

// printf("%d",len);


for(i=0;i<len;i++)

{

switch(postfix[i])

{

case'(':

case'+':

case'-':

case'*':

case'/':push(stack,STACK_SIZE,&top,postfix[i]);

break;

case')':do{

pop(stack,&top,&data);

if(data!='(')

printf("%c",data);

else

break;

}while(1);

break;

default:printf("%c",postfix[i]);

break;

}

}

printf("\n");

return 0;
}


int isStackEmpty(char stack[],char *top)
{

return((*top==-1)?1:0);

}


int isStackFull(char stack[],int n,char *top)
{

return((*top==n-1)?1:0);

}


int push(char stack[],int n,char *top,char data)
{

if(*top<n-1){

*top=*top+1;

stack[*top]=data;

return(1);

}else{

return(0);

}

}

int pop(char stack[],char *top,char *data)
{

if(*top>-1){

*data=stack[*top];

*top=*top-1;

return(1);

}else{

return(0);

}

}



void printStack(char stack[],char top)
{

int index;


for(index=0;index<=top;index++)

{

printf("%d ",stack[index]);

}

printf("\n");

}


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 GavinHuang 的頭像
    GavinHuang

    Gavin的部落格

    GavinHuang 發表在 痞客邦 留言(0) 人氣()