首页 > 代码库 > 魔术师发牌问题
魔术师发牌问题
问题描述:
魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示。”魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2,将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上这样依次进行将13张牌全部翻出,准确无误。
解决方案:
用循环链表实现
代码描述:
#include<stdio.h>#include<stdlib.h>#define N 13 //魔术师的牌数 (A-K依次用1~13表示)typedef struct Node{ int data; struct Node *next; }Node;typedef struct Node *LinkList;//构造循环链表Node* CreatList1(struct Node *La,int n){ //构造一个循环链表,(结点的值为0)返回循环链表的首地址 int i; struct Node *p,*s; La = (LinkList)malloc(sizeof(Node)); La->next = NULL; p = La; for(i = 1;i <= N;i++) { s = (LinkList)malloc(sizeof(Node)); s->data = http://www.mamicode.com/0;"事先牌的排放顺序为:\n"); for(i = 1;i <= N;i++) { printf("%3d",p->data); p = p->next; } printf("\n"); system("pause"); return 1; }
魔术师发牌问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。