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

56 lines
1.2 KiB
C++

#include "../chp2/Fib.h"
#include "stackApp.h"
/*
* @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){
Stack<char> charStack;
while(n != 0){
charStack.push(digits[n % base]);
n /= base;
}
char* res = new char[charStack.getSize() + 1];
int pos = 0;
while (!charStack.empty()) res[pos++] = charStack.pop();
res[pos] = '\0';
return res;
}
/*
* @brief : to judge if an expression of matches
* @args : exp
* @return: return true if matches
*/
bool paren(const char exp[]){
Stack<char> parenStack;
char currParen, popped;
for(int ix = 0; (currParen = exp[ix]) != '\0'; ++ix){
switch(currParen){
case '(':
case '[':
case '{':
parenStack.push(currParen);
break;
case ')':
if (parenStack.empty()) return false;
if (parenStack.pop() != '(') return false;
break;
case ']':
if (parenStack.empty()) return false;
if (parenStack.pop() != '[') return false;
break;
case '}':
if (parenStack.empty()) return false;
if (parenStack.pop() != '{') return false;
break;
}
}
return parenStack.empty()? true : false;
}