1. 栈的构造
用vector来自定义栈:
class stack{
vector<char> stack_;
int size = 0;
public:
void push(char c){
stack_.push_back(c);
size++;
}
int top(){
return stack_[size-1];
}
int pop(){
size --;
return stack_[size];
}
void print_stack(){
for(int i=0;i<size;i++)
cout<<stack_[i]<<" ";
}
bool is_empty(){
if(size == 0){
return true;
}
return false;
}
};
2. 栈的应用
2.1 进制转换
stack* Stack = new stack();
int n = 12345;
char digit[] = "0123456789abcdef";
while(n){
int digit_ = n%16;
Stack->push(digit[digit_]);
n = n/16;
}
while(!Stack->is_empty()){
cout<<Stack->pop();
}
2.2 括号匹配
如果是左括号,就入栈。如果是右括号,且栈顶正好是匹配的左括号,就出栈;如果栈顶不是匹配的左括号,就压栈。
最后看一看栈是否是空的。