Files
912-notes/thu_dsa/chp4/stackApp.h

56 lines
1.6 KiB
C

#ifndef STACKAPP_H_
#define STACKAPP_H_
#include "Stack.h"
#define NOPTR 9
static char digits[] = { '0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z' };
/*
* @brief : convert a decimal digit n to any base(2 <= base <= 36)
* @args :
* @return: return the result in the form of char*
*/
char* convert(__int64 n, int base);
/*
* @brief : to judge if an expression of parens matches
* @args : exp
* @return: return true if matches
*/
bool paren(const char exp[]);
//pri[stack top optr][curr optr]
const char pri[NOPTR][NOPTR] = {
/* + - * / ^ ! ( ) \0 */
/* + */ '>', '>', '<', '<', '<', '<', '<', '>', '>',
/* - */ '>', '>', '<', '<', '<', '<', '<', '>', '>',
/* * */ '>', '>', '>', '>', '<', '<', '<', '>', '>',
/* / */ '>', '>', '>', '>', '<', '<', '<', '>', '>',
/* ^ */ '>', '>', '>', '>', '>', '<', '<', '>', '>',
/* ! */ '>', '>', '>', '>', '>', '>', '<', '>', '>',
/* ( */ '<', '<', '<', '<', '<', '<', '<', '=', ' ',
/* ) */ ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
/* \0 */ '<' ,'<', '<', '<', '<', '<', '<', ' ', '=' };
/*
* @brief : to compute the value of an infix expression
* @args : infixExpr
* @return: return the value in double
* @others: only consider valid infix expression
*/
double evaluate(char* infixExpr);
/*
* @brief : to convert an infix expression to a postfix one
* @args : infixExpr
* @return: return the converted postfix expression
* @others: only consider valid infix expression
*/
char* toPostfix(char* infixExpr);
#endif