用单向循环链表实现约瑟夫环
2015-01-11 15:56
253 查看
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。
#include <iostream> using namespace std; struct Node{ int position; int visited=0; Node *next; }; int main() { Node *head; head=new(Node); head=NULL; Node *p; p=new(Node); head=p; p->position=1; for(int i=2;i<=41;i++){ p->next=new(Node); p=p->next; p->position=i; p->next=NULL; } p->next=head; Node *q; q=new(Node); q=head; while(q->position!=3){ q=q->next; } while(q!=NULL){ if(q->visited==0){ cout<<q->position<<endl; q->visited=1; int count=0; while(count!=3){ q=q->next; if(q->visited==0){ count++; } } } else{ do{ q=q->next; } while(q->visited!=0); cout<<q->position<<endl; q->visited=1; } } return 0; }
相关文章推荐
- 单向循环链表实现约瑟夫环
- 单向循环链表的实现以及约瑟夫环的实现
- java单向循环链表实现约瑟夫环
- 约瑟夫环问题(不带头结点单循环链表实现和数组实现)
- 单向循环链表实现约瑟环问题
- (C语言版)链表(二)——实现单向循环链表创建、插入、删除、释放内存等简单操作
- 单向循环链表的实现C++封装
- 使用C++实现的单向循环链表
- 使用C++实现的单向循环链表
- 循环链表 约瑟夫环问题实现
- C++实现单向循环链表
- 数据结构:循环单向链表——约瑟夫环
- 链表初解(三)——约瑟夫环之循环链表实现
- 用单向循环链表解决约瑟夫环(Joseph)问题
- 数据结构学习系列三-单向循环链表(c++实现且应用模板)
- C++数据结构--单向循环链表(实现头插法,尾插法)
- 约瑟夫环-单向循环链表
- 约瑟夫环的循环链表实现
- 数据结构学习之链表(单向、单循环以及双向)(递归实现)
- 约瑟夫环之循环链表实现