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();//出栈
}
6.stack重载了"="元素符,可以用"="将一个stack中的内容复制到另一个中
#include<bits/stdc++.h>
using namespace std;
int main()
{
stack<int> s1,s2;
s1.push(1);s1.push(2);s1.push(3);
s2 = s1;
cout<<s2.top();
return 0;
}
7.可以用swap交换两个stack容器中的内容