题目描述: 有黑桃1到13,13张牌,成某种顺序,魔术师可以从1开始数 ,数1,背面朝上的13张牌第一张就是1,然后放到桌面上,然后从1开始数,把第一张放在所有牌下面,数到2,翻开,就是2,再放到桌子上,以此此类推
#include<stdio.h>
#include<stdlib.h> #define LEN sizeof(LinkList)
#define cardNum 13 typedef struct node
{
int data;
struct node *next;
}LinkList; LinkList *creatList()
{
LinkList *head = NULL;
LinkList *s,*r; r = head; for(int i=1; i <= cardNum; i++)
{
s = (LinkList *)malloc(LEN);
s->data = 0; if(head == NULL)
{
head = s;
}
else
{
r->next = s;
}
r = s;
}
r->next = head;
return head;
} void MagicCard(LinkList *head)
{
int i;
int countNum = 2;
LinkList *p;
p = head;
p->data = 1; while(1)
{
for(i=0; i < countNum; i++) //寻找作用
{
p = p->next;
if(p->data != 0) //那个地方已经有牌则从下一张开始
{
p = p->next;
i--;
}
} if(p->data == 0)
{
p->data = countNum;
countNum++; if(countNum == 14)
break;
}
} } int main(void)
{
int i;
LinkList *p; p = creatList();
MagicCard(p);
printf("魔术牌的顺序是:\n");
for(i=0; i < cardNum; i++)
{
printf("黑桃%d ",p->data);
p = p->next;
} return 0;
} Latin 例如3阶的 1 2 3
2 3 1
3 1 2
自己实现:
#include<stdio.h>
#include<stdlib.h> #define LEN sizeof(LinkList) typedef struct node
{
int data;
struct node *next;
}LinkList; LinkList *CreatList(int num) //生成循环链表
{
int i;
LinkList *head = NULL;
LinkList *p,*s; for(i = 1; i <= num; i++)
{
s = (LinkList *)malloc(LEN);
s->data = i; if(head == NULL)
{
head = s;
}
else
{
p->next = s;
}
p = s;
}
p->next = head;
return head;
} int main(void)
{
LinkList *p;
LinkList *s;
int num;
int i,j; printf("请输入想要创建的Latin维数:");
scanf("%d",&num);
p = CreatList(num);
printf(" %d维Latin:\n",num); for(i=0; i < num; i++)
{
for(j=0; j < num; j++)
{
printf("%3d",p->data);
p = p->next;
}
p = p->next;
printf("\n");
}
return 0;
}

线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)的更多相关文章

  1. 顺序存储线性表_ArrayList

    相信大家在日常开发过程中 List 应该使用的非常非常多,今天就来简单学习一下 List 的数据结构 顺序存储线性表. 一.什么是顺序存储线性表 顺序存储线性表是最基本.最简单.也是最常用的一种数据结 ...

  2. 线性表Linearlist

    顺序存储,链式存储,索引存储,散列存储 基本运算 SLIST         1.置空表 void SetNull(&L)     2.求长度 int Length(L)     3.取元素 ...

  3. 数据结构(Java描述)之线性表

    基础概念 数据结构:是相互之间存在一种或多种关系的数据元素的集合. 逻辑结构和物理结构 关于数据结构,我们可以从逻辑结构和物理结构这两个维度去描述 逻辑结构是数据对象中数据元素之间的关系,是从逻辑意义 ...

  4. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  5. 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。

    //归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...

  6. Java集合类学习笔记(各种线性表性能分析)

    ArrayList.LinkedList是线性表的两种典型实现:基于数组的线性表和基于链的线性表. Queue代表了队列,Deque代表了双端队列. 一般来说,由于数组以一块连续内存区来保存所有的数组 ...

  7. 动态分配的顺序线性表的十五种操作—C语言实现

    线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

  8. Java Se :线性表

    Java的集合框架分为两个系列,Collection和Map系列.在大学期间,学习数据结构时,好像学习了线性表.非线性表.树,哎,都给忘了.其实,在Collection系列内部又可以分为线性表.集合两 ...

  9. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...

  10. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

随机推荐

  1. Django: 后台常用操作

    指定状态码 return JsonResponse(data, status=201) Djano删除数据库 删除对应数据库后,删除对应文件 删除对应的记录 Django后台管理 创建超级管理员 py ...

  2. 开源.NetCore通用工具库Xmtool使用连载 - XML操作篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的发送短信类库,今天我们继续为大家介绍其中的XML操作类库. XML操作是软件开发过程中经常会遇到的情况:包括XML内容的遍历解 ...

  3. 《Pro Git》起步笔记

    @ 目录 什么是版本控制 本地版本控制系统 集中化的版本控制 分布式的版本控制系统 Git简史 Git是什么 安装Git 在Linux上安装 在Windows上安装 初次运行Git前的配置 用户信息 ...

  4. 渗透小tis

    知己知彼,百战不殆 1.如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击. 2.程序溢出,int最大值为2147483647,可尝试使用该值进行整数溢 ...

  5. 简单了解PyCharm

    简单了解PyCharm PyCharm的简单使用 修改主题 1 2 切换解释器 1 如何创建pythin文件 1 2 3 4 注释语法 行注释 这里是注释 块注释 '''这里是注释''' 常量和变量的 ...

  6. AI绘图开源工具Stable Diffusion WebUI前端API对接

    背景 本文主要介绍 AI 绘图开源工具 Stable Diffusion WebUI 的 API 开启和基本调用方法,通过本文的阅读,你将了解到 stable-diffusion-webui 的基本介 ...

  7. Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过

    Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过 JS算法逆向 在进行渗透测试过程中,在一些功能点进行参数注入或者枚举爆破等过程中,会出现参数进行加密的情况,但是我们输 ...

  8. defined('BASEPATH') OR exit('No direct script access allowed'); 的作用

    起到保护.php文件的作用, 如果直接访问此php文件会得到"不允许直接访问脚本"的错误提示 如果你是用ci框架或者其他的什么, 就建议加上, 如果你怕别人恶意攻击你的话

  9. Ionic3 与Electron制作桌面应用

    Ionic3 与Electron制作桌面应用 原文:https://medium.com/@LohaniDamodar/lets-make-desktop-application-with-ionic ...

  10. ionic app调试问题

    以下是一些ionic app在模拟器中的调试问题: 1. CORS问题 官方原文以及解释:Handling CORS issues in Ionic 国内翻译:彻底解决Ionic项目中的跨域问题 2. ...