近来赋闲,打算陆陆续续地整理一下有关数据结构的知识,大佬们可以浅浅过一下,萌新的话可以慢慢看
另:由于个人经验、技术有限,故难免存在不足,请在评论区指出
栈(stack)是在系统底层中被广泛使用的一种数据结构,遵循后进先出(last in first out,LIFO)原则,即最先入栈的元素最后一个出栈,反之亦然。
在C++中,我们有两种方式来实现栈,一种是用数组+指针自行实现
//建一个大小为N的栈
int st[N];
//定义一个指针用于指示位置,初始化为栈底
int *it = st;
//入栈
st[++*st] = num1;
//弹栈要注意数组越界的问题,当指针指向栈底(*st = 0)的时候就不能再弹栈
if(*st)--*st;
//清空
*st = 0;
另一种则是使用C++自带的容器stack来实现(需调用头文件<stack>)
std::stack提供了一些成员函数,常用的有:
top():返回栈顶元素
pop():弹出栈顶元素,但无返回值
push():压栈
size():返回栈中的元素个数
empty():返回栈是否为空
下面是调用这些成员函数的一些实例
stack<int>st;//新建一个栈
st.push(1);//压入1
cout << "Top:" << st.top() << endl << "Size:" << st.size() << endl << "Empty:" << st.empty() << endl;
st.pop();//弹栈
cout << "Size:" << st.size() << endl << "Empty:" << st.empty() << endl;