魔术师发牌问题

一,问题描述:魔术手中有13张牌,都是黑桃的,第一张牌翻过来是黑桃A,也就是1,因为他正确了,所以放在桌面上,第二张牌我们必须翻出2,但是魔术师会数两张牌,第一张放在牌的最低端,第二张翻出来刚好是2,又把它放在桌面上,接着魔术师会数三张牌,按顺序数,第一张放在牌的最低端,第二张放在牌的最低端,第三张翻开来,刚好是3,放在桌面上,以此类推把所有的牌都数完了,刚好是从1到13,即为1、2、3、4、5、6、7、8、9、10、J、Q、K这十三张按顺序排放。怎么用编程的思想来解决这个问题,使得怎样才可以保证按这个顺序拿牌会得出相应的结果。

二,解决方案:循环链表

三,代码分析:

#include <stdio.h>
#include <stdlib.h>

#define CardNumber 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=1; i<=CardNumber; i++)
	{
	     s = (linklist)malloc(sizeof(sqlist));
		 s->data = 0;
		 
		 if(head == NULL)
		    head = s;
		 else
		    r->next = s;
			
		 r &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值