Posted on 2012-02-28 00:36
hoshelly 阅读(190)
评论(0) 编辑 收藏 引用 所属分类:
DS && Algorithm
#include<stdlib.h>
#include<time.h>
#include<stdio.h>
#define MAXSTACK 100//栈的最大容量
int stack[MAXSTACK];//栈的数组声明
int top =-1; //栈的顶端
//栈的数据存入
int push(int value)
{
if(top>=MAXSTACK)//是否超过容量
{
printf("栈的内容全满\n");
return -1;
}
top++;
stack[top]=value;//栈指针加1,存入栈
}
//栈数据的取出
int pop()
{
int temp;
if(top<0)
{
printf("栈内容是空的\n");
return -1;
}
temp = stack[top];
top--;
return temp;
}
//检查栈是否是空的
int empty()
{
if(top == -1)
return 1;
else
return 0;
}
//主程序:运用empty()检查牌是否发完
//红心:数组0~12,方块:数组13~25,梅花:数组26~38,黑桃:数组39~51
void main()
{
int card[52];
int pos;
int i,temp;
for(i=0;i<52;i++)
card[i]=0;
i=0;
while(i!=5)//洗五张牌循环
{
pos=rand()%52;//随机数取值0~51
if(card[pos] == 0) //是否是未洗牌
{
push(pos);//存此张牌进栈
card[pos]=1;//设置此张牌洗过
i++;//下一张牌
}
}
while(!empty())//发完栈全部的牌
{
temp=pop(); //取出栈数据
printf("[%c%3d]",temp/13+3,temp%13+1);
}
printf("\n");
}