栈/队列 的应用-(codeup 1918)简单计算器
一、栈
栈:后进先出的数据结构。
栈顶指针:始终指向栈的最上方元素的一个标记。使用数组实现栈时,栈顶指针是一个int型变量(数组下标从零开始),记top;使用链表实现栈时,是一个int* 型指针。
栈中没有元素,栈空时令top为-1。
栈的常见操作
- 清空 clear()
栈顶指针置为-1
void clear(){
TOP=-1;
}
- 获取栈内元素个数 size()
top指针始终指向栈顶元素
int size(){
return TOP+1; //top是一个int型变量,返回数组下标
}
- 判空 empty()
bool empty(){
if(TOP==-1) return true;
else return false;
}
- 进栈 push()
先把top+1,再把x存入top指向的位置
void push(int x){
st[++TOP]=x;
}
- 出栈 pop()
栈顶指针-1,必须先判空
void pop(){
TOP--;
}
- 取栈顶元素 top()
必须先判空
int top(){
return st[TOP];
}
二、队列
队列:先进先出的数据结构。就像食堂打饭,队列总是从队尾加入元素,从队首移除元素。
一般来说,队首指针front指向队首元素的前一个位置,队尾指针rear指向队尾元素。
队列常见操作
- 清空 clear()
初始状态:front=-1,rear=-1
void clear(){
front=rear=-1;
}
- 获取队列内元素的个数 size()
rear-front
int size(){
return rear-front;
}
- 判空 empty()
front - - -> front==rear
bool empty(){
if(front==rear) return true;
else return false;
}
- 入队 push()
先将rear+1,再存放到rear指向的位置
void push(int x){
q