stack堆栈是一个先进后出的线性表,插入元素只能在表的一段进行。插入元素的一端称为栈顶,另一端称为栈底。插入元素叫入栈,删除元素叫出栈。
stack的头文件是<stack>
1.栈的常用方法
stack<Element> s; //定义栈
s.pop(); //出栈
s.push(); //入栈
s.top(); //返回栈顶元素
s.size(); //返回栈中元素个数
s.empty(); //检查栈是否为空,如果为空返回true,否则返回false
2.应用举例
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y;
};
int main()
{
stack<node> s; //定义一个存储node类型元素的栈
node A;
for(int i = 0; i < 10; i++)
{
A.x = i;A.y = i;
s.push(A); //入栈
}
printf("栈顶元素为:%d %d\n",(s.top()).x,(s.top()).y);
printf("栈中元素个数为:%d\n",s.size());
printf("栈中元素依次为:\n"); //从栈顶到栈底
while(!s.empty()) //依次输出栈中元素并清空栈
{
printf("%d %d\n",(s.top()).x,(s.top()).y);
s.pop();
}
if(s.empty()) printf("栈为空!");
return 0;
}
3.栈的清空和判空
要注意栈没有clera()函数,只能通过循环出栈清空。