一、栈的应用
栈是一种先进后出(FILO)的数据结构
-
清空(clear):
/*栈的清空操作就是把栈顶top置为-1*/ void clear(){ top=-1; } /*清空栈,由于没有直接用于清空栈的元素,所以使用while和pop组合*/ while(!st.size()) st.pop();
-
获取栈内元素个数(size):
/*由于栈顶指针top始终指向栈顶元素,而下标是从0开始的,所以栈内元素要把top+1*/ int size(){ return top+1; }
-
判空(empty):
/*由栈顶指针top判断的定义可知,仅当top==-1是为空,返回true,否则返回false*/ bool empty(){ if(top==-1) return true; //栈空 else return false; //栈非空 }
-
进栈(push):
/*push(x)操作将元素x置于栈顶,由于top始终指向栈顶元素,所以需要把top+1然后再把x存入top位置*/ void push(int x){ st[++top]=x; }
-
出栈(pop):
/*pop()操作将栈顶元素出栈,而事实上可以将栈顶指针-1来实现这个效果*/ void pop(){ top--; }
-
取栈顶元素(top):
/*由于栈顶指针top始终指向栈顶元素,所以st[top]就是栈顶元素*/ int top(){ return st[top]; }
stack的常见用法
栈,后进先出(FILO)
- stack的定义:
/* 定义一个stack需要添加头文件#include <stack> 以及在头文件下方加上using namespace std; stack<int> st; */ stack<int> st;
- stack容器内的元素访问:
/* 只能通过top()函数来访问栈顶元素 */ st.top();
- push()函数:
/* push(x)将x入栈 */ st.push(1);
- top()函数:
/* top()函数获得栈顶元素 */ st.top();
- pop()函数:
/* 使用pop()函数弹出栈顶元素 */ st.pop();
- empty()函数:
/* empty()可以检测stack内是否为空,true为空,false为非空 */ if(st.enpty()==true)
- size()函数:
/* 通过size()函数来获得栈的元素个数 */ st.size();