尾插法和循环链表。

#include <stdio.h>
#include <stdlib.h> typedef struct CircleLinkList
{
int data;
struct CircleLinkList * next;
}circleLinkList; int main()
{
circleLinkList * h, * r, * s;
circleLinkList * L;
int n, num; printf("请输入参与约瑟夫环的总人数及淘汰者编号:");
scanf("%d %d",&n,&num); h = (circleLinkList *)malloc(sizeof(circleLinkList));
r = h;
for(int i = 0; i < n; i++) // 尾插法建立链表
{
s = (circleLinkList *)malloc(sizeof(circleLinkList));
s -> data = i + 1; // 为参与人员编号
r -> next = s; // 中间过程分配的空间插到尾指针后面
r = s;
} r -> next = NULL;
L = h -> next;
while(L)
{
printf("%d ",L -> data);
L = L -> next;
} r -> next = h -> next;
L = h -> next;
while(L -> next != L)
{
for(int j = 1; j < num - 1; j++)
{
L = L -> next;
}
L -> next = L -> next -> next;
L = L -> next;
}
puts("\n最终胜利者:");
printf("%d\n",L -> data); return 0;
}

  Output:

  本段代码其本质都是用第一段代码中的主要方法 尾插法 来建立链表的):

#include <stdio.h>
#include <stdlib.h> typedef struct CircleLinkList
{
int data;
struct CircleLinkList * next;
}circleLinkList; int main()
{
circleLinkList * h = NULL, * p, * q;
int n , num; printf("请输入参与人数及淘汰编号:");
scanf("%d %d",&n,&num); for(int i = 0; i < n; i++)
{
p = (circleLinkList *)malloc(sizeof(circleLinkList));
if(h == NULL)
h = p;
else
q -> next = p;
p -> data = i + 1;
p -> next = NULL;
q = p;
} q -> next = h;//循环条件 while(h != h -> next)
{
for(int i = 1; i < num - 1; i++)
h = h -> next;
h -> next = h -> next -> next;
h = h -> next;
}
puts("最终胜利者:");
printf("%d\n",h -> data); return 0;
}

  

CircleLinkList(循环链表)的更多相关文章

  1. 【数据结构】循环链表&&双向链表详解和代码实例

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 循环链表 1.1 什么是循环链表? 前面介绍了单链表,相信大家还记得相关的概念.其实循环链表跟单链表也没有差别很多,只是在 ...

  2. 循环链表C语言实现

    按照单链表的设计,稍加改动.和单向链表不一样的地方,头节点不指向NULL,而是指向自己head 循环链表的判满 1)判断next是不是头结点,2)判断size /* * CycleLinkList.h ...

  3. C语言- 基础数据结构和算法 - 循环链表

    听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...

  4. java程序设计之循环链表

    照例来说点废话,愿自己生一颗温柔细腻的心,这样女朋友也许一个眼神,一个微笑,我就知道如何做,可惜内心与外表一样粗糙,这一生有幸认识她,愿天下有情人终成眷属. 循环链表,顾名思义循环就好了,所以建一个线 ...

  5. 单链表、循环链表的JS实现

    数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑......   当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...

  6. 双向链表、双向循环链表的JS实现

    关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法:  单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...

  7. JAVA 链表操作:循环链表

    主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...

  8. Have Fun with Numbers及循环链表(约瑟夫问题)

    1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...

  9. javascript中使用循环链表实现约瑟夫环问题

    1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...

随机推荐

  1. java把带小数点的字符串转换成int类型

    String number ="1.0000"; int num =Double.valueOf(number).intValue();//转换为Int类型

  2. 干了这杯Java,让你的Idea比eclipse好用

    1.Idea基本配置 1.1 Idea简介 Idea是一个专门针对Java的集成开发工具(IDE),由Java语言编写.所以,需要有JRE运行环境并配置好环境变量.简单的说,Idea是写代码用的工具. ...

  3. blog主题——田野(1)

    贮存一下,blog代码 QAQ 页首html <link rel='stylesheet' href='https://blog-static.cnblogs.com/files/elkyo/c ...

  4. git和github的关系以及简单易懂的理解

    git和github的关系   写在前面:我身边好多人问我git和github的区别,想必对于好多人没学过的大佬们恐怕也是一脸懵逼,但是不知道也是不行的,所以我今天就来讲一讲这二者的区别和联系. 用一 ...

  5. mount命令实际操作样例

    本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...

  6. 改变input[type=range]的样式 动态滑动

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  7. Presto入门介绍

    (一)背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求,Facebook2012年开发,2013年开源 (二)是什么 基于内存的并行计算,Facebook推出的分布式SQL交 ...

  8. django之orm的高级操作以及xcc安全攻击

    查询用法大全: 1. 比较运算符 # id > 3 res = models.UserInfo.objects.filter(id__gt=3) # id >= 3 res = model ...

  9. 图片识别OCR:

    使用Python制作一个简易的OCR图片文字识别工具:键盘上的PrtScr按键+画图工具+百度AI图片识别(账户,调用接口)+python 常见的OCR工具: 1. Microsoft Onenote ...

  10. chrome 2行换行省略号 ... text-ellipse

    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; 谷歌内部项目 ...