魔术师发牌问题
来源:互联网 发布:php变量的作用域 编辑:程序博客网 时间:2024/04/26 19:17
#include <stdio.h>#include <stdlib.h>#define CardNumber 13/*魔术师利用一副牌中的13张黑牌,预先将他们拍好后叠在一起,牌面朝下对观众说:“我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?现场演示”。魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,将黑桃A放在桌子上,第二次数1,2将第一张牌放在这些牌的下面,将第二张牌翻过来,正好是黑桃2,也将放在桌子上这样一次进行将13张牌全部翻出,准确无误。问题:牌的顺序是如何安排的?*//***定义链表的结构*/typedef struct node{ int data; struct node *next;}sqlist,*linklist;/***链表的创建*/linklist CreateLinkList(){ linklist head=NULL; linklist s,r; int i; r=head; for(i=0;i<=CardNumber;i++) { s=(linklist)malloc(sizeof(sqlist)); s->data=0; if(head==NULL) head=s; else r->next=s; r=s; } r->next=head; return head;}/***发牌顺序计算*/void Magician(linklist head){ linklist p; int j; int Countnumber=2; p=head; p->data=1; while(1) { for(j=0;j<Countnumber;j++) { p=p->next; if(p->data!=0) { p=p->next; j--; } } if(p->data==0) { p->data=Countnumber; Countnumber++; if(Countnumber==14) break; } }}/***销毁工作*/void DestoryList(linklist* list){ linklist ptr=*list; linklist buff[CardNumber]; int i=0; while(i<CardNumber) { buff[i++]=ptr; ptr=ptr->next; } for(i=0;i<CardNumber;++i) free(buff[i]); *list=0;}int main(){ linklist p; int i; p=CreateLinkList(); Magician(p); printf("按如下顺序排列:\n"); for(i=0;i<CardNumber;i++) { printf("黑桃%d\n",p->data); p=p->next; } DestoryList(p); return 0;}
0 0
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题(数据结构)
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题2
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- 魔术师发牌问题
- Java多线程与并发应用-(6)-多个线程之间共享对象和数据的方式
- IndexOf小结
- mysql 多行变一行
- 用TCP/IP进行网际互联 卷一 读书笔记1
- HTML5新的语义标签——大纲算法
- 魔术师发牌问题
- C#WPF应用程序学习杂记
- 用JavaScript实现冒泡排序
- 虚拟示波器要点
- java生成excel和读取excel例子
- 继承的构造函数
- 系统
- android:layout_width与android:with的区别
- 正则表达式