QQ排序 队列操作

问题是给你一串数字,先将第一个删除,第二个放到队尾,第三个删除,第四个放到队尾,知道最后一个数字删除,求每次删除的数字。


首先,用c++普通算法实现。

#include<iostream>
using namespace std;
int main()
{
int q[100];
int i,head,tail,n;
while(cin>>n)
{
for(i=1;i<=n;i++)
cin>>q[i];   //输入 
head=1;      //指向数组的头 
tail=n+1;    //指向数组的尾加1,要存入删除的头 
while(head<tail)
{
cout<<q[head];  //输出头 
head++;         //队首出队 

q[tail]=q[head]; //新的队首添加到队尾 
tail++;      //队尾后移 
head++;     //下一个出队的队首 

cout<<'\n'; 
}
return 0; 


用c++中的队列函数queue实现。

queue入队,如例:q.push(x); 将x 接到队列的末端。

queue出队,如例:q.pop(); 弹出队列的第一个元素,注意,并不会返回被弹出元素的值。

访问queue队首元素,如例:q.front(),即最早被压入队列的元素。

访问queue队尾元素,如例:q.back(),即最后被压入队列的元素。

判断queue队列空,如例:q.empty(),当队列空时,返回true。

访问队列中的元素个数,如例:q.size()


#include<iostream>
#include<queue>
using namespace std; 
int main()
{
queue <int> q;
int i,n;
while(1)
{
while(cin>>n)   //输入n,以^z结束 
q.push(n);      //将n插入队尾 
while(!q.empty()) //当队列不为空 
{
cout<<q.front()<<' '; //输出队首数字 
q.pop();              //删除队首数字 
 
q.push(q.front());    //将新的队首数字插入到队尾 
q.pop();              //删除队首数字 

}
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值