天天看點

中序表達式轉換成後序表達式問題(棧的應用)

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

#include  < stdio.h >

中序表達式轉換成後序表達式問題(棧的應用)

#include  < stdlib.h >

中序表達式轉換成後序表達式問題(棧的應用)

#include  < string .h >

中序表達式轉換成後序表達式問題(棧的應用)

#include  < ctype.h >

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

#define  MAX 101 

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

typedef  struct  optor

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)

        char ch ;

中序表達式轉換成後序表達式問題(棧的應用)

        struct optor *next ;

中序表達式轉換成後序表達式問題(棧的應用)

} OPT ;

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

   OPT  * opttop  =  NULL ; 

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

void  push_opt(  int  cx)

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)

     OPT *q ;

中序表達式轉換成後序表達式問題(棧的應用)

     q = (OPT *)malloc(sizeof(OPT)) ;

中序表達式轉換成後序表達式問題(棧的應用)

     q->ch = cx ;

中序表達式轉換成後序表達式問題(棧的應用)

     q->next= opttop;

中序表達式轉換成後序表達式問題(棧的應用)

     opttop = q ;

中序表達式轉換成後序表達式問題(棧的應用)

}

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

char  top_opt( void )

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)

     if(opttop)

中序表達式轉換成後序表達式問題(棧的應用)

     return opttop->ch ;

中序表達式轉換成後序表達式問題(棧的應用)

     return '#' ;

中序表達式轉換成後序表達式問題(棧的應用)

}

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

void  pop_opt()

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)

     OPT *q ;

中序表達式轉換成後序表達式問題(棧的應用)

     q = opttop ;

中序表達式轉換成後序表達式問題(棧的應用)

     opttop = opttop->next ;

中序表達式轉換成後序表達式問題(棧的應用)

     free(q);

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

}

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

int  rank( char  cr)

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)

    if( cr == '-' || cr == '+')

中序表達式轉換成後序表達式問題(棧的應用)

    return 1 ;

中序表達式轉換成後序表達式問題(棧的應用)

    else if( cr == '*' || cr == '/')

中序表達式轉換成後序表達式問題(棧的應用)

    return 2 ;

中序表達式轉換成後序表達式問題(棧的應用)

    else if( cr == '^')

中序表達式轉換成後序表達式問題(棧的應用)

    return 3 ;

中序表達式轉換成後序表達式問題(棧的應用)

}

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

int  main( void )

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

... {

中序表達式轉換成後序表達式問題(棧的應用)
中序表達式轉換成後序表達式問題(棧的應用)

    char st[MAX]=...{'