根据书上的代码,利用C++的队列和栈改写了一些由结构体实现的栈和队列的部分
#include<iostream>
#include<queue>
#include<stack>
#include<cstdio>
using namespace std;
int main(){
queue<int> q1,q2;
stack<int> s,s1;
int book[10]={0};//标记桌上的牌,初始为零 1~9
int i,t,x;
//初始队列,栈均为空
//依次给1,2发牌,每人六张
//1
for(i=0;i<6;i++){
cin>>x;
q1.push(x);
}
//2
for(i=0;i<6;i++){
cin>>x;
q2.push(x);
}
//模拟玩牌的过程
while(!q1.empty()&&!q2.empty()){
//队列不为空执行循环
t=q1.front();//返回队顶元素
q1.pop();//出队
//判断能否赢牌
if(book[t]==0){
//不能赢牌,没有对应牌面的牌
s.push(t); //同时入栈,放到桌子上
book[t]=1;
//桌子上有牌面为t的牌,桌子上一定不会同时两张一样的牌
}
else{
//1出的牌能赢牌,把赢得牌放到队尾
q1.push(t);
while(s.top()!=t){//把桌子上赢得牌放到手中
x=s.top();//接收栈顶元素
book[x]=0;//取消标记
q1.push(x);//入队尾,放到手中
s.pop();//栈中弹出
}
book[t]=0;//收回桌子上牌面为