#include<stdio.h>
struct queue
{
int date[1000];
int head;
int tail;
};//將小哼和小哈的牌定爲隊列隊列
struct stack
{
int date[10];
int top;
};//將桌上的牌定爲棧
int main()
{
struct queue q1,q2;
struct stack s;
int i,t;
int book[10];//將桌上的牌存入,若有則爲1,如沒有,則爲默認值0io
q1.head=1;
q1.tail=1;
q2.head=1;
q2.tail=1;
s.top=0;date
for(i=1; i<=9; i++)
book[i]=0;//此時桌上沒有牌
for(i=1; i<=6; i++)//讀入少哼手中的牌
{
scanf("%d",&q1.date[q1.tail]);
q1.tail++;
}
for(i=1; i<=6; i++)//讀入小哈手中的牌
{
scanf("%d",&q2.date[q2.tail]);
q2.tail++;
}
while(q1.head<q1.tail && q2.head<q2.tail)//當小哼和小哈手中的牌都不爲空時
{
t=q1.date[q1.head];//小哼將手中的第一張牌打到桌上
if(book[t]==0)//若是桌上沒有與小哼出的牌相同的話
{
q1.head++;//出隊
s.top++;//入棧
s.date[s.top]=t;
book[t]=1;//此時桌上已有這張面值的牌了
}
else//若是桌上有與小哼出的牌相同的話
{
q1.head++;//出隊
q1.date[q1.tail]=t;//將出隊的牌入隊,放到最後一張
q1.tail++;
while(s.date[s.top]!=t)//將桌上的牌一張一張的放入小哼的手中
{
book[s.date[s.top]]=0;//將出棧的牌置爲0
q1.date[q1.tail]=s.date[s.top];//入隊
q1.tail++;
s.top--;
}
book[s.date[s.top]]=0;//將最後一張與出隊的牌相同面值的牌也入隊到手中
q1.date[q1.tail]=s.date[s.top];
q1.tail++;
s.top--;
}
if(q1.head==q1.tail) break;//若是此時小哼手中已沒有牌了,小哈獲勝
//下面的與小哼同款
t=q2.date[q2.head];
if(book[t]==0)
{
q2.head++;
s.top++;
s.date[s.top]=t;
book[t]=1;
}
else
{
q2.head++;
q2.date[q2.tail]=t;
q2.tail++;
while(s.date[s.top]!=t)
{
book[s.date[s.top]]=0;
q2.date[q2.tail]=s.date[s.top];
q2.tail++;
s.top--;
}
book[s.date[s.top]]=0;
q2.date[q2.tail]=s.date[s.top];
q2.tail++;
s.top--;
}
}
if(q2.head==q2.tail)
{
printf("小哼win\n");
printf("小哼當前手中的牌是");
for(i=q1.head; i<=q1.tail; i++)
printf(" %d",q1.date[i]);
if(s.top>0)
{
printf("\n桌山上的牌是");
for(i=1; i<s.top; i++)
printf(" %d",s.date[i]);
}
else printf("\n桌上已經沒有拍了");
}
else
{
printf("小哈win\n");
printf("小哈當前手中的牌是");
for(i=q2.head; i<=q2.tail; i++)
printf(" %d",q2.date[i]);
if(s.top>0)
{
printf("\n桌山上的牌是");
for(i=1; i<s.top; i++)
printf(" %d",s.date[i]);
}
else printf("\n桌上已經沒有拍了");
}queue
return 0;
}top