queue操作:
queue<int>q; 创建一个int型空队列q
q.empty(); 判断队列是否为空,为空返回true
q.push(s); 将变量s从队尾入队
q.pop(); 将队头元素弹出
q.front(); 只返回队头元素
q.back(); 只返回队尾元素
q.size(); 返回队列中元素个数
代码:
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
int main()
{
queue<int> q;
int i,a[5];
//判断队列是否为空
if (q.empty()) //为空时,返回true
cout<<"队列为空"<<endl;
//入队
for (i=0;i<5;i++)
{
cin>>a[i];
q.push(a[i]);
}
cout<<"队首元素是:"<<q.front()<<endl;
cout<<"队尾元素是:"<<q.back()<<endl;
cout<<"队列中元素个数:"<<q.size()<<endl;
q.pop();
cout<<"出队一次后队首元素为:"<<q.front()<<endl;
}
deque双端队列的操作 (可以在队头队尾进行入队出队操作)
deque<int> dq; 创建一个数双端队列dq
dq.empty(); 判断队列是否为空,为空返回true
dq.push_front(s); 将s从队头入队
dq.push_back(s); 将s从队尾入队,和普通队列方式一样
dq.front(); 只返回队头元素
dq.back(); 只返回队尾元素
dq.pop_front(); 将队头元素弹出
dq.pop_back; 将队尾元素弹出
dq.clear(); 将队列清空
代码:
#include<iostream>
#include<algorithm>
#include<deque>
using namespace std;
int main()
{
int i,a[100];
deque<int> dq;
if (dq.empty())
cout<<"队列为空"<<endl;
for (i=1;i<=5;i++)
dq.push_back(i); //将1-5从队尾入队
for (i=6;i<=10;i++)
dq.push_front(i); //将6-10从对头入队
while (!dq.empty()) //队列不为空
{
cout<<dq.front()<<" "; //显示队头元素
dq.pop_front(); //将队头元素弹出
}
}
有一叠n张卡片,从上到下依次编号为1~n,从最上面的一张开始按如下的顺序进行操作:把最上面的第一张卡片拿掉,把下一张卡片放在这一叠卡片的最下面;再把最上面的依次重复这样做,直到手中剩下一张卡片。
要求:输入不同的n,能输出剩下的这张卡片是原来n张卡片的第几张。
代码:
#include<iostream>
#include<algorithm>
#include<deque>
using namespace std;
int main()
{
deque<int> dq;
int n,i;
cin>>n;
for (i=1;i<=n;i++)
dq.push_back(i);
while (dq.size()!=1)
{
dq.pop_back();//最上面的拿掉
//将放在卡片最下面并删除
dq.push_front(dq.back());
dq.pop_back();
}
cout<<dq.front();
}