约瑟夫循环
来源:互联网 发布:天下三女角色捏脸数据 编辑:程序博客网 时间:2024/06/07 01:02
/*#include<iostream>
using namespace std;
struct jos
{
int bianhao;
int mima;
struct jos *next;
}*p,*q,*head;
int main()
{
int m,n,i,j;
cout<<"请输入人数 n:";
cin>>n;
for(i=1;i<=n;i++)
{
if(i==1)
{
head=p=(struct jos*)malloc(sizeof(struct jos));
if(p==0)
return 0;
}
else
{
q=(struct jos*)malloc(sizeof(struct jos));
if(q==0)
return 0;
p->next=q;
p=q;
}
cout<<"请输入第 "<<i<<" 个人的密码: ";
cin>>(p->mima);
p->bianhao=i;
}
p->next=head; //使链表尾指向链表头 形成循环链表
p=head;
cout<<"请输入m的初始值 m:";
cin>>m;
cout<<"出列顺序为: ";
for (j=1;j<=n;j++)
{
for(i=1;i<m;i++,p=p->next);
m=p->mima;
cout<<p->bianhao<<" ";
p->bianhao=p->next->bianhao;
p->mima=p->next->mima;
q=p->next;
p->next=p->next->next;
free(q);
}
cout<<endl;
return 0;
}
*/
#include <iostream>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *link;
}LNode, *LinkList;
void Josephus(int n, int k, int m) // n个人,从第k个人开始报数,m为出列者喊到的数
{
LinkList p, r, cur; // p为当前结点,r为p的前驱
p = new LNode;
if(!p)
{
cout << "The failure of memory allocated!" << endl;
}
p->data = n;
p->link = p; //循环链表
cur = p;
for(int i=1; i<n; i++)
{
LinkList t = new LNode;
if(!t)
{
cout << "The failure of memory allocated!" << endl;
}
t->data = i;
t->link = cur->link;
cur->link = t;
cur = t;
}
//移动当前指针到k
while(k--)
{
r = p;
p = p->link;
}
//报数为m的人出列
while(n--)
{
for(int s=m-1; s--; r=p, p = p->link);
cout << "The output is: " << p->data << endl;
r->link = p->link;
LinkList d = new LNode;
if(!d)
{
cout << "The failure of memory allocated!" << endl;
}
d = p;
p = r->link;
delete d;
}
}
int main()
{
Josephus(13,4,1);
return 0;
}
- 约瑟夫循环
- 约瑟夫循环
- 约瑟夫循环
- 约瑟夫循环问题uva305Joseph
- 循环列表|约瑟夫问题
- 约瑟夫循环链表
- SzNOI c002 约瑟夫循环
- 数组实现约瑟夫循环
- 约瑟夫循环报数问题
- 约瑟夫问题-循环链表
- 约瑟夫循环问题的解答
- 循环链表 约瑟夫环
- 循环队列 约瑟夫问题
- 约瑟夫问题(循环列示例)
- 约瑟夫环 - 循环链表
- 循环链表---约瑟夫环
- 循环单链表实现约瑟夫环
- 循环链表:约瑟夫问题
- 二维码的生成细节和原理[膜拜]
- pthread_once重塑singleton模式
- 判断单链表是否存在环,判断两个链表是否相交问题详解
- Gsl在VS2008下的配置和使用
- 笔者总结的一些前端面试笔试试题(仅供参考,如果错误,望指教)--2
- 约瑟夫循环
- c语言的面试题
- base64编码,64个字符之外的字符
- MP算法和OMP算法及其思想
- JAVA编程思想第四版-多线程的练习答案之练习15
- HDFS写入文件操作的处理流程源码分析
- 文本转换程序
- 数组指针与指针数组的区别(函数指针与指针函数类似)
- C语言字符串反转函数