stack堆栈是一个先进后出的线性表,插入元素只能在表的一段进行。插入元素的一端称为栈顶,另一端称为栈底。插入元素叫入栈,删除元素叫出栈。
头文件是<stack>
1.定义栈
stack <Element> s;
2.出栈和入栈
s.pop();//出栈
s.push();//入栈
3.取栈顶元素
s.top(); //返回栈顶元素
4.栈中元素数量
s.size();//返回栈中元素个数
#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;
}
5.栈的清空和判空
要注意栈没有clera()函数,只能通过循环出栈清空
s.empty();//判断栈是否为空,为空返回true,不为空返回false
//栈的清空
while(!s.empty())// 栈不为空
{
s.pop();//出栈
}