约瑟夫循环链表
来源:互联网 发布:贾敏 知乎 编辑:程序博客网 时间:2024/05/21 10:26
//// 约瑟夫循环链表
#include<iostream>
using namespace std;
struct Node
{
int data;
Node *link;
};
void josephus(int n,int k,int m)//n个人,第k个开始计数,计到m就出列
{
Node *list;//把它设为头结点
list=(Node*)malloc(sizeof(Node));
list->data=1;
Node *p,*s;
p=(Node*)malloc(sizeof(Node));
p->data=2;
list->link=p;
for(int i=3;i<=n;i++)//要保证最后一个的link指向头结点
{
s=(Node*)malloc(sizeof(Node));
s->data=i;
p->link=s;
p=s;
}
p->link=list;//最后一个指针指向了头指针
//这是检测代码
//p=list;
//while(p!=NULL)
//{
// cout<<p->data<<" ";
// p=p->link;
//}
p=list;
for(int i=1;i<k;i++)
p=p->link;//第k个人
while(n--)
{
for(int i=m;i>0;i--,s=p,p=p->link )
;//空循环
cout<<p->data<<endl;
s->link=p->link;
free(p);
p=s->link;//防止垂悬指针
}
}
int main(void)
{
josephus(13,4,1);
return 0;
}
#include<iostream>
using namespace std;
struct Node
{
int data;
Node *link;
};
void josephus(int n,int k,int m)//n个人,第k个开始计数,计到m就出列
{
Node *list;//把它设为头结点
list=(Node*)malloc(sizeof(Node));
list->data=1;
Node *p,*s;
p=(Node*)malloc(sizeof(Node));
p->data=2;
list->link=p;
for(int i=3;i<=n;i++)//要保证最后一个的link指向头结点
{
s=(Node*)malloc(sizeof(Node));
s->data=i;
p->link=s;
p=s;
}
p->link=list;//最后一个指针指向了头指针
//这是检测代码
//p=list;
//while(p!=NULL)
//{
// cout<<p->data<<" ";
// p=p->link;
//}
p=list;
for(int i=1;i<k;i++)
p=p->link;//第k个人
while(n--)
{
for(int i=m;i>0;i--,s=p,p=p->link )
;//空循环
cout<<p->data<<endl;
s->link=p->link;
free(p);
p=s->link;//防止垂悬指针
}
}
int main(void)
{
josephus(13,4,1);
return 0;
}
0 0
- 约瑟夫循环链表
- 约瑟夫问题-循环链表
- 循环链表 约瑟夫环
- 约瑟夫环 - 循环链表
- 循环链表---约瑟夫环
- 循环链表:约瑟夫问题
- 循环链表-约瑟夫问题
- 循环链表--约瑟夫问题
- 循环链表-约瑟夫环
- 约瑟夫环循环链表
- 约瑟夫环的循环链表实现
- josephus 约瑟夫的循环链表实现
- 约瑟夫环(循环链表)
- 循环链表实现约瑟夫环
- 约瑟夫斯环算法(循环链表)
- 用循环链表求解约瑟夫问题
- 不使用循环链表,约瑟夫环
- 循环链表实现约瑟夫环
- Centos6.3下ActiveMQ5.7.0主备集群配置
- C++面试中string类的一种正确写法
- Android构建boot.img:root目录与ramdisk.img的生成
- 自娱自乐
- 6174问题
- 约瑟夫循环链表
- 第九周项目 3 输出星号图(b)
- 云屋视频会议协助罗西尼表业高效运作
- new运算符和operator new()
- 第一章:Spring Web MVC入门——深入浅出学Spring Web MVC
- ALSA声卡驱动七之ASoC架构中的Codec
- javascript判断undefined值
- thinkPHP的include使用
- 5.5 函数值