CircleLinkList(循环链表)
尾插法和循环链表。
#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(循环链表)的更多相关文章
- 【数据结构】循环链表&&双向链表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 循环链表 1.1 什么是循环链表? 前面介绍了单链表,相信大家还记得相关的概念.其实循环链表跟单链表也没有差别很多,只是在 ...
- 循环链表C语言实现
按照单链表的设计,稍加改动.和单向链表不一样的地方,头节点不指向NULL,而是指向自己head 循环链表的判满 1)判断next是不是头结点,2)判断size /* * CycleLinkList.h ...
- C语言- 基础数据结构和算法 - 循环链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- java程序设计之循环链表
照例来说点废话,愿自己生一颗温柔细腻的心,这样女朋友也许一个眼神,一个微笑,我就知道如何做,可惜内心与外表一样粗糙,这一生有幸认识她,愿天下有情人终成眷属. 循环链表,顾名思义循环就好了,所以建一个线 ...
- 单链表、循环链表的JS实现
数据结构系列前言: 数据结构作为程序员的基本知识,需要我们每个人牢牢掌握.近期我也展开了对数据结构的二次学习,来弥补当年挖的坑...... 当时上课的时候也就是跟着听课,没有亲自实现任何一种数据结 ...
- 双向链表、双向循环链表的JS实现
关于链表简介.单链表.单向循环链表.JS中的使用以及扩充方法: 单链表.循环链表的JS实现 关于四种链表的完整封装: https://github.com/zhuwq585/Data-Structu ...
- JAVA 链表操作:循环链表
主要分析示例: 一.循环链表简述 二.单链表循环链表 三.双链表循环链表 一.循环链表简述 循环链表即链表形成了一个循环的结构,尾节点不再指向NULL,而是指向头节点HEAD,此时判定链表的结束是尾节 ...
- Have Fun with Numbers及循环链表(约瑟夫问题)
1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...
- javascript中使用循环链表实现约瑟夫环问题
1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...
随机推荐
- java把带小数点的字符串转换成int类型
String number ="1.0000"; int num =Double.valueOf(number).intValue();//转换为Int类型
- 干了这杯Java,让你的Idea比eclipse好用
1.Idea基本配置 1.1 Idea简介 Idea是一个专门针对Java的集成开发工具(IDE),由Java语言编写.所以,需要有JRE运行环境并配置好环境变量.简单的说,Idea是写代码用的工具. ...
- blog主题——田野(1)
贮存一下,blog代码 QAQ 页首html <link rel='stylesheet' href='https://blog-static.cnblogs.com/files/elkyo/c ...
- git和github的关系以及简单易懂的理解
git和github的关系 写在前面:我身边好多人问我git和github的区别,想必对于好多人没学过的大佬们恐怕也是一脸懵逼,但是不知道也是不行的,所以我今天就来讲一讲这二者的区别和联系. 用一 ...
- mount命令实际操作样例
本篇文章主要介绍了如何在Linux(CentOS 7)命令行模式安装VMware Tools,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. 本例中为在Linux(以CentOS 7为例)安装VM ...
- 改变input[type=range]的样式 动态滑动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- Presto入门介绍
(一)背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求,Facebook2012年开发,2013年开源 (二)是什么 基于内存的并行计算,Facebook推出的分布式SQL交 ...
- django之orm的高级操作以及xcc安全攻击
查询用法大全: 1. 比较运算符 # id > 3 res = models.UserInfo.objects.filter(id__gt=3) # id >= 3 res = model ...
- 图片识别OCR:
使用Python制作一个简易的OCR图片文字识别工具:键盘上的PrtScr按键+画图工具+百度AI图片识别(账户,调用接口)+python 常见的OCR工具: 1. Microsoft Onenote ...
- chrome 2行换行省略号 ... text-ellipse
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; 谷歌内部项目 ...