【C++】用循环链表实现约瑟夫环
来源:互联网 发布:mac桌面图标整理工具 编辑:程序博客网 时间:2024/04/29 20:39
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围,他们 每个人都一个密码。先设定一个数为m,从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到上个人密码的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
#include<iostream>using namespace std;class linknode{public:int number;int cipher;linknode *next;linknode(int number,int cipher){this->number = number;this->cipher = cipher;this->next = NULL;}};class linklist{public:int size;bool first;linknode *current;linknode *head;linklist(){this->first = true;this->size = 0;linknode *h = new linknode(0,0);this->head = h;this->current = NULL;}void insert(linknode *x){if(size==0){head->next = x;x->next = head;}else{current = head;while(current->next!=head)current = current->next;current->next = x;x->next = head;}size++;}void deletenode(linknode *x){if(size==0)exit(0);else{current = head;while(current->next!=x)current = current->next;current->next = x->next;}size--;}void JesephRing(int m){if(size==0)return;int h;if(first==true) current = head;for(int i = 0;i<m;i++){current = current->next;if(current == head){current = current->next;}}h = current->cipher;cout<<current->number<<endl;deletenode(current);first = false;JesephRing(h);}};int main(){linklist u;int a[7][2] = {{1,3},{2,1},{3,7},{4,2},{5,4},{6,8},{7,4}};int k = sizeof(a)/sizeof(a[0]);for(int i = 0;i<k;i++){u.insert(new linknode(a[i][0],a[i][1]));}u.JesephRing(20);}
0 0
- 【C++】用循环链表实现约瑟夫环
- 循环链表实现约瑟夫环(C实现)~
- 约瑟夫环(C循环链表)
- 约瑟夫环的循环链表实现
- 循环链表实现约瑟夫环
- 循环链表实现约瑟夫环
- 循环链表实现 约瑟夫环
- 循环链表实现约瑟夫环
- Java循环链表实现约瑟夫环
- 循环链表 约瑟夫环问题实现
- 循环链表实现约瑟夫环
- 循环链表实现约瑟夫环
- 约瑟夫环问题循环链表实现
- 约瑟夫环之循环链表实现
- 约瑟夫环循环链表实现
- 循环链表实现约瑟夫环
- Java循环链表实现约瑟夫环
- 使用循环链表实现约瑟夫环
- Microsoft.Practices.Unit在Web应用程序中的使用
- Statement based replication with Stored Functions, Triggers and Events
- 网络球形摄像机与网络半球摄像机区别
- Tomcate配置虚拟目录
- git使用
- 【C++】用循环链表实现约瑟夫环
- iOS 推送通知
- PHP 统计目录大小
- 啊撒大哥发生地方撒的
- HDU 1521 排列组合 指数型母函数
- EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)
- java中常用集合类极其详解
- Http字段含义
- Learn Objective-C: Day 1