链表实现约瑟夫环

简介: //Dev c++ #include#include#include//调用putchar函数typedef struct stu{ int num; struct stu*next;}stu,*pointer;int main(){ int i,n,m,count; pointer p,q,r;...

//Dev c++

#include<stdio.h>
#include<malloc.h>
#include<string.h>//调用putchar函数
typedef struct stu{
int num;
struct stu*next;
}stu,*pointer;
int main()
{
int i,n,m,count;
pointer p,q,r;
r=p=q=(pointer)malloc(sizeof(pointer));
p->num=1;p->next=NULL;//无头结点
printf("Input n and m:");//m为步长
scanf("%d%d",&n,&m);
for(i=2;i<=n;i++)//建立链表
{
p=(pointer)malloc(sizeof(pointer));
p->num=i;
r->next=p;
r=r->next;
}
p->next=q;//循环链表
printf("出圈顺序为:\n");
for(i=1,count=0;count<n-1;)//删除(n-1)个数
{
if(i==m)
{
printf("%d ",q->num);
p->next=q->next;//删除q节点
free(q);
q=p->next;
count++;
i=1;
}
else
{
p=p->next;
q=q->next;
i++;//i++不能写在for循环内部
}
}
printf("%d ",p->num);
putchar('\n');
system("pause");
return 0;
}

 

目录
相关文章
|
2月前
|
存储 算法 C语言
线性表,双向链表,静态链表,循环链表(约瑟夫环)(上)
线性表,双向链表,静态链表,循环链表(约瑟夫环)
52 5
|
缓存 算法
Algorithms_基础数据结构(04)_线性表之链表_单向循环链表&约瑟夫环问题
Algorithms_基础数据结构(04)_线性表之链表_单向循环链表&约瑟夫环问题
75 0
|
存储
链表的实现:无头单向非循环链表的实现
链表的实现:无头单向非循环链表的实现
59 0
链表的实现:无头单向非循环链表的实现
|
Java
两个链表的第一个公共节点(Java实现)
两个链表的第一个公共节点(Java实现)
114 0
两个链表的第一个公共节点(Java实现)
|
消息中间件 存储 缓存
基于数组和链表实现队列
创建大数组实现对象:里面包含的信息公共初始化: 初始化页工厂:索引页工厂、数据页工厂、元数据页工厂,初始化数组索引、初始化数据页索引,通过队列前置索引页工厂获取索引页,获取队列front索引buffer,获取front,也即索引。这个实现和kafka是类似的,也即需要有相关页信息 入队列:进行入队操作是一个追加的操作,首先判断容量是否够,不够,则进行扩容操作。通过缓存拿到映射页实现,然后通过映射页。再通过锁,仅锁定创建页,索引用完后进行移除操作,映射页面实现,使用双向校验,如果为空,则创建页索引对象,通过索引拿到文件名称,然后通过读写通道进行读写操作。使用fileChannal调用映射方法获取
125 0
基于数组和链表实现队列
|
Java
简洁明了!Java实现单向环形链表以解决约瑟夫环Josepfu问题
简洁明了!Java实现单向环形链表以解决约瑟夫环Josepfu问题
149 0
简洁明了!Java实现单向环形链表以解决约瑟夫环Josepfu问题
|
存储 算法 小程序
数据结构与算法——第三节 链表(单向不循环不带头+双向循环带头 C实现+源码剖析+运行+思路分析)
可以看到 ,我如果要吧黑球插入到白球里面,显然,我要把7号位的球移到8号位,5号位的球移到6号位...然后最后才能把2号位的求插进去。如果有N个数据,那么它的算法的时间复杂度达到了O(N)!
104 0
数据结构与算法——第三节 链表(单向不循环不带头+双向循环带头 C实现+源码剖析+运行+思路分析)
|
存储 JavaScript 开发者
TypeScript实现链表与变相链表
TypeScript实现链表与变相链表
TypeScript实现链表与变相链表
|
存储
【数据结构】认识链表和模拟实现单链表(1)
【数据结构】认识链表和模拟实现单链表
92 0
【数据结构】认识链表和模拟实现单链表(1)