这次利用循环链表解决魔术师发牌问题!
问题是这样的:魔术师利用一副牌中的13张黑牌,预先给他们排好后叠在一起,牌面朝下面,对观众们说“我不看牌,只需要数一数就可以猜到 每张牌是什么~”
然后呢,魔术师讲最上面的那张牌数为1 ,把它翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的下面,将第二张牌翻过来 正好是黑桃2 ,也将它放在 桌子上 ,这样,依次进行下去,13张牌被全部翻出,而且 准确无误~
解释:一开始,把叠好的牌放在桌面上铺好 一列, 最上面的那张为 黑桃A 也就是 1,然后把它拿出来,扔掉 ,然后 魔术师 知道剩下牌的第二张就是 2,然后他又装个样子 走过去,把2 拿出来扔掉 , 然后剩下牌 第三张就是3 然后又装装样子 走过去 把3 拿出来 又扔掉~ 以此类推 ,不难理解把
这副牌摆放的位置如上图 ,如果刚才解释 还看不懂的话 看下这幅图 方便理解 ~
下面 是这道题目的代码:
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(list)
struct list
{
int data;
struct list *next;
}<