博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-循环单链表之魔术师发牌问题
阅读量:6573 次
发布时间:2019-06-24

本文共 1437 字,大约阅读时间需要 4 分钟。

问题描写叙述:

       魔术师手中有A、2、3……J、Q、K十三张黑桃扑克牌。在表演魔术前,魔术师已经将他们依照一定的顺序叠放好(有花色的一面朝下)。魔术表演过程为:一開始,魔术师数1,然后把最上面的那张牌翻过来,是黑桃A;然后将其放到桌面上;第二次,魔术师数1、2;将第一张牌放到这些牌的最以下,将第二张牌翻转过来,正好是黑桃2;第三次,魔术师数1、2、3;将第1、2张牌依次放到这些牌的最以下,将第三张牌翻过来正好是黑桃3;……直到将全部的牌都翻出来为止。问原来牌的顺序是怎样的。

接下来通过c语言简单实现:

#include "stdafx.h"#include "stdlib.h"//声明一个单链表结构体typedef struct LNode {	int data;		//数据域,数据域的类型为泛型(ElementType)	LNode *next;	//指针域,指向下一个node的地址}LNode, *LinkList;	//声明2个结构体别名(结构体别名和结构体指针别名),方便在外部直接通过别名定义该结构体类型的变量
/*魔术师发牌问题:循环单链表*//*初始化循环单链表n个节点数据为0*/LinkList initList(int n) {	if (n < 1) {		return NULL;	}	LNode *s;	LNode *p;	p = NULL;	LNode *r = NULL;	int j = 1;	while (j<=n)	{		s = (LinkList)malloc(sizeof(LNode));		s->data = 0;		if (p == NULL) {			p =r = s;		}		else		{			r->next = s;			r = s;		}		j++;	}	r->next = p;	return p;}/*根据算法规则对相应位置进行数据填充*/LinkList magic(int n) {	LNode *L;	LinkList p =initList(n);	L = p;	int j = 1;	while (true)	{			//第一个节点数据为1		if (j == 1) {			p->data = j;			j++;			continue;		}		int k = j;//临时存储节点需要偏移的次数		for (int i = 1; i <= k; i++)		{					p = p->next;			if (p->data != 0) {				//判断该节点是否已有数据,如果有则需要跳过该节点即多向后移动一次				k++;			}		}		p->data = j;//赋值		j++;		if (j > n) {			break;		}	}	return L;}

主函数:

void main() {	int n = 10;	LinkList L = magic(n);	int j = 1;	while (L!=NULL)	{		printf_s("%d\t", L->data);		if (j < n) {			L = L->next;		}		else		{			break;		}		j++;	}}

输出结果:

以上只是我个人设计的一种实现,如果发散思维肯定还有很多种写法呢!

转载于:https://www.cnblogs.com/babac/p/9028465.html

你可能感兴趣的文章
sort()排序
查看>>
Windows IO 性能简单测试
查看>>
HDU-1796 How many integers can you find 容斥定理
查看>>
css display&&hidden
查看>>
不使用border-radius,实现一个可复用的高度和宽度都自适应的圆角矩形
查看>>
平衡二叉树——Balance Binary Sort Tree 设计与实现
查看>>
https
查看>>
js动态加载css文件和js文件的方法
查看>>
HTML中的table和div
查看>>
SqlServer整库备份还原脚本
查看>>
使用Github发布自己的网站
查看>>
2019-04-28 Mybatis generator逆向工程生成的Example代码分析
查看>>
使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(七)
查看>>
解决datagridview 横向的scrollbar不显示
查看>>
异或的性质及运用
查看>>
05-树9 Huffman Codes
查看>>
高性能服务器架构思路
查看>>
计算机网络期末复习资料
查看>>
系统移植总结
查看>>
WiresShark 图解教程1
查看>>