数据结构与STL
栈是只能在某一端插入和删除的特殊线性列表,具有先进后出的特性。
栈的常用函数

例题:
验证栈序列
题目描述:
给出pushed和poped两个序列,其取值从1到n(n<=100000)。
已知入栈序列是pushed,如果出栈序列有可能是poped,则输出Yes,否则输出No。
输入样例:
5
1 2 3 4 5
3 5 2 4 1
输出样例:
No
代码实现:
int ptr1=1,ptr2=1,flag=0;
while(ptr2<=n){
while(s.empty()||s.top()!=poped[ptr2]&&ptr1<=n){
s.push(pushed[ptr1++];
}
if(!s.empty()&&s.top()==poped[ptr2]){
s.pop();
ptr2++;
}
else{
cout<<”No”<<endl;
flag=1;
break;
}
}
if(flag==0){
cout<<”Yes”<<endl;
}
队列(queue),遵循先进先出的原则。
使用队列存取数据元素时,数据元素只能从表的一端进入队列,另一端出队列。
队列常用函数:

优先队列和队列一样,只能从队尾插入元素,从队首删除元素。
优先队列的特性时队列中优先级最大的元素总是位于队首(可以理解为自动排序)。
定义普通优先队列:
priority_queue<int,vector,greater >
可以用重载运算符”<”重新定义优先队列中元素的排列规则。
常用函数:
