python约瑟夫环单向循环链表_约瑟夫环的单向循环链表的实现代码
/*************************************************************************
> File Name: JosephCirle.c
> Author: Wenfei6316
> Mail: wenfei6316@163.com
> Created Time: 2018年06月18日 星期一 09时42分28秒
************************************************************************/
/*约瑟夫环说明:N(N>1) 个人组成一圈,从第 num 个人开始报数(从 1 开始报数)
*当谁报到数字 count 时将执行枪决,然后继续从后面一位开始接着循环,
*直到最后只剩下一个人,利用单向循环链表模拟出每次被杀的人以及最后存活的人*/
#include
#include
#include
typedef enum{false, true}bool;
typedef int data_t;
typedef struct Node
{
data_t data;
struct Node *next;
}JosephNode, *JosephLise;
JosephLise CreateList(int num);
void PrintList(JosephLise cyclelist);
void KillGame(JosephLise cyclelist, int num, int killer);
int main(int argc, const char *argv[])
{
int count = 10;
int num = 8;
int killer = 15;
JosephLise josephcirle;
josephcirle = CreateList(count);
PrintList(josephcirle);
printf("%d is beginning!\n", num);
printf("Calling %d will be killed!\n", killer);
KillGame(josephcirle, num, killer);
return 0;
}
JosephLise CreateList(int num)
{
int i;
JosephLise p, q, s;
if (num < 2)
{
printf("It is insignificance!\n");
exit(EXIT_FAILURE);
}
p = (JosephLise)malloc(sizeof(JosephNode));
if (p == NULL)
{
perror("Create JosephCirle failed!\n");
exit(EXIT_FAILURE);
}
p->data = 1;
p->next = NULL;
q = p;
for (i=2; i<=num; i++)
{
s = (JosephLise)malloc(sizeof(JosephNode));
if (s == NULL)
{
perror("Create JosephCirle failed!\n");
exit(EXIT_FAILURE);
}
s->data = i;
q->next = s;
q = s;
}
q->next = p;
return p;
}
void PrintList(JosephLise cyclelist)
{
bool count = false;
JosephLise p, q;
if (cyclelist == NULL)
{
printf("cyclelist is NULL!\n");
return ;
}
p = cyclelist;
while (!count)
{
printf("%2d ", p->data);
if ((p=p->next) == cyclelist)
count = true;
}
printf("\n");
}
void KillGame(JosephLise cyclelist, int num, int killer)
{
int i;
JosephLise p, q;
if (cyclelist == NULL)
{
printf("Joseph Cirle is error!\n");
return ;
}
if (num<2 || killer<2)
{
printf("It is insignificance!\n");
return ;
}
p = cyclelist;
for (i=1; i
p = p->next;
while (p->next != p)
{
for (i=1; i
p = p->next;
q = p->next;
printf("%d is killed!\n", q->data);
p->next = q->next;
free(q);
q = NULL;
}
printf("Congratulations, you are free, No%d!\n", p->data);
free(p);
return ;
}
python约瑟夫环单向循环链表_约瑟夫环的单向循环链表的实现代码相关推荐
- 锁相环环路滤波器计算公式_锁相环计算方法.doc
锁相环计算方法 2.理论分析计算与电路设计 2.1 锁相环 2.1.1 锁相环原理 为了使系统产生稳定的载波,本系统设计中采用锁相环路.锁相环路是一种反馈控制电路,将参考信号与输出信号之间的相位进行比 ...
- java约瑟夫环 循环链表_约瑟夫环_循环链表JAVA解答
编写测试案例 public class Cicle { @Test public void test() { LinkedList linkedList = new LinkedList(); lin ...
- 锁相环环路滤波器计算公式_锁相环计算方法
2.1.2 锁相环分频 锁相环分频由参考分频和可编程分频组成,由 MC145152 及 MC12022 实现. 分频框图如下: 图中 PD 为数字鉴相器, f o 为压控振荡的输出频率(即发射频率) ...
- 锁相环环路滤波器计算公式_锁相环PLL的电路原理以及基本构成
锁相环 (phase locked loop),顾名思义,就是锁定相位的环路.学过自动控制原理的人都知道,这是一种典型的反馈控制电路,利用外部输入的参考信号控制环路内部振荡信号的频率和相位,实现输出信 ...
- python turtle绕原点旋转_分享给大家几段有趣的代码,学会python画画可以不用自己动手啦...
前言 Python 是一门简单易学且功能强大的编程语言,无需繁琐的配置,掌握基本语法,了解基本库函数,就可以通过调用海量的现有工具包编写自己的程序,轻松实现批量自动化操作,可以极大提高办公和学习效率. ...
- 防火墙单向访问控制_防火墙TCP的单向控制
网络拓扑: 如上图所示,防火墙分为external/internal/dmz三个安全zone,其中10.133.1.100/32为dmz区的一台squid缓存服务器,10.158.1.10/32,10 ...
- python 便利店收银系统_前端开发之便利店收银系统代码
1+X前端初级JQ 社区便利店收银系统代码 4.5 15 5 addClick = (price) => { let result = $('#t').val(); //从表单里面获取value ...
- 《恋上数据结构第1季》单向循环链表、双向循环链表以及约瑟夫环问题
循环链表(CircleList) 链表的接口设计 单向循环链表 单向循环链表完整源码 双向循环链表 双向循环链表完整源码 双向循环链表解决约瑟夫环问题 如何发挥循环链表的最大威力? 静态链表 数据结构 ...
- c语言约瑟夫环问题,C++_详解约瑟夫环问题及其相关的C语言算法实现,约瑟夫环问题
N个人围成一圈 - phpStudy...
详解约瑟夫环问题及其相关的C语言算法实现 约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推 ...
最新文章
- Aspose.words 书签定位
- csdn修改博客皮肤
- JavaScript MVC框架和语言总结[infoq]
- ElasticSearch _xpack用户管理
- 查看命令为内置命令还是外部命令
- mysql常用命令orderby_MySQL常用命令总结
- 如何使用 jMeter CSV Data Set config
- BZOJ3527:[ZJOI2014]力(FFT)
- 【python之路14】发送邮件实例
- vue.js踩坑之组件参数检验与非props特性
- Atom飞行手册翻译: 2.13 基本的自定义
- python开发环境有哪些特点_快速了解Python开发环境Spyder
- 华为交换机一次性进入多个接口_华为交换机交换机常用配置(认证、批量操作)...
- VS 和 Eclipse 的一些快捷键记录
- Matlab GUI编程技巧(四):m文件与simulink之间数据传递
- 杭州邮政编码一览表|杭州邮编|杭州邮编查询
- JVM(1.8)GC日志解析与分析
- 66个求职应聘技巧性问答(三)
- 欧洲上班族心碎:工作时网聊将无隐私可言
- 人活着系列之芳姐和她的猪
热门文章
- 硬件产品研发,除了电子元器件成本,还有什么成本?
- C语言指针,这可能是史上最干最全的讲解啦(附代码)!!!
- 关于使用两个GTP/GTX出现[DRC RTSTAT-1]error([route 35-54] critical warning)的问题详解
- 风变编程python助教_花30天时间,学完了风变编程Python基础语法课
- java 获取当前月份的第一天_JAVA获取本月的第一天和最后一天
- 中职高级计算机操作员,计算机操作员专业排行榜
- latex beamer 空一行_握草!一行Python代码写的游戏,我能这样玩一天
- mysql消息队列的原理_PHP和MySQL实现消息队列
- 手机版python3.6.6的requests库下载_Python爬虫之Python3.6 Requests库的基本使用方法
- 分块入门(根据hzwer的博客。。)(右端点是r不是n。。)