魔术师发牌问题

魔术师发牌问题

问题描述

将扑克牌中所有13张黑桃花色(别的也无所谓,反正都13张)牌抽出,按一定顺序排列。

从牌组顶端取出第一张牌,翻开查看,为黑桃一。

将翻开的扑克牌置于一旁,继续从牌组顶端取出两张牌,翻开第二张查看,为黑桃二。

将翻开的扑克牌置于一旁,未翻开的置于牌组底部,继续从牌组顶端取出三张牌,翻开第三张查看,为黑桃三。

以此类推,直到牌组中最后一张牌翻开,为黑桃K。

求最初牌组的排列顺序。

算法解析

通过“将未翻开的扑克牌置于牌组底部”可将牌组看作一循环链表。

定义一拥有13个节点的循环链表,数据域用于存储扑克牌数值,初始化为0,为了后面便于判断此位置是否为空。

定义一计数器,初始化为2,用于计算下次存值要要跨越几个位置。每次存值后计数器加一,当计数器不小于14时退出循环。

注意:

在存值之前需要判断此位置数据与是否为零,即是否已存入扑克牌数值。

若此位置已经存入数值,说明实际翻牌过程中已经将其从牌组中抽出。

因此要跳过此位置,即指针指向下一位置,同时计数器减一重来。

代码实现

循环链表部分

#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef int Status;
#define ERROR 0
#define OK 1 

//链表存储结构 
typedef struct LNode{
   
	ElemType data;
	struct LNode *next;
}LNode,*
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pq分区魔术师一个非常有才华的魔术师,他以独特的pq分区技巧而闻名于世。pq分区是一种将物体分割为两个部分的魔术技巧,其中一个部分可以自由地移动,而另一个部分则似乎消失了。这个魔术师在表演时会使用特殊的道具,在观众面前展示出惊人的魔术效果。 魔术师开始表演时,他会展示一个看起来普通的鸽子笼。观众们可能会怀疑,这只是一个普通的道具,并没有什么特别之处。然而,当魔术师开始使用pq分区技巧时,观众们会被他的技术深深吸引。 魔术师先将鸽子笼放在一个透明的箱子中,并且在观众面前展示鸽子笼是完整的。然后,他突然将鸽子笼分成两个部分:一个是鸟巢,另一个是笼子。观众们会惊讶地发现,在分割后,鸟巢可以自由地移动,而笼子部分似乎消失了。 接下来,魔术师会展示不同的变化。他可以将鸟巢和笼子重新组合在一起,然后再次将它们分割。每一次,观众们都会被他巧妙的手法所吸引,感叹他的技巧之高超。 看似不可能的事情在魔术师的手中变得可能,观众们为他的表演着迷。他的pq分区技巧展示了他对细节的精确掌控和巧妙的手法,使得他成为一个备受瞩目的魔术师。 总之,pq分区魔术师pojieban以其独特的技巧和高超的手法,在魔术表演中引起了广大观众的兴趣和好评。他的表演令人难以置信,并让人不禁丧失了对现实的理性思考。这是一位令人赞叹的魔术师,他的表演给人们带来了无尽的惊喜和欢乐。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值