数据结构—约瑟夫环问题(循环单链表) n个数据元素构成一个环,从环中任意位置开始计数,计到m将该元素从表中取出,重复上述过程,直至表中只剩下一个元素。解题思路:用一个无头结点的循环单链表来实现n个元素的存储。循环单链表:尾指针指向头结点。这样指针可以循环移动。可以...
,n(n>0)个设计一个带头结点的循环单链表类,实现约瑟夫环问题; 问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐-圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m从第一个人开始顺时针方向自1起顺序报数。报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下...
接下来是各部分的具体实现 1structNode{2Object data; //用于存放各个节点的数值,在约瑟夫环问题中,存放不同人的编号3Node*next; //每个单链表节点的指向下一个节点的指针45Node(constObject& d = Object(), Node* n=NULL) //默认构造函数6: data(d), next(n) {}7}; 内嵌类iterator的实现 //iterator...
void CreaList(NodeType **,int);//创建单向循环链表 NodeType *GetNode(int,int);//得到一个结点 void PrntList(NodeType *);//打印循环链表 int isEmptyList(NodeType *);//测试链表是否为空 void JosephusOperate(NodeType **,int);//运行约瑟夫环问题 int main(void) { int n=0; int m=0; NodeTy...
C语⾔⽤循环单链表实现约瑟夫环⽤循环单链表实现约瑟夫环(c语⾔),供⼤家参考,具体内容如下 源代码如下,采⽤Dev编译通过,成功运⾏,默认数到三出局。主函数:main.c⽂件 #include <stdio.h> #include "head.h"#include "1.h"int main(){ Linklist L;int n;printf("请输⼊约瑟夫环中...
//11.约瑟夫环出列 Status ListTraverse_L(LinkList L, int k); //12.遍历 LinkList CreatList_L(int k) //构造约瑟夫环 { LinkList L; LNode *p, *s; L = (LinkList)malloc(sizeof(LNode)); L->next = L; p = L; for (int
约瑟夫环问题是比较经典的问题,原来做的题目是依次输出数字,而原来的循环链表结构不改变,今天遇到一道题是要求按照顺序重新组成一个循环单链表。 题目:一些人围坐一圈报数,形成一个循环单链表,当报数是m或m的倍数时出将节点从单链表中删除,重新加入新的循环单链表,最后形成一个新的循环单链表。
但约瑟夫环需要的是要删掉每次循环数到m的位置的节点。remove方法可以去掉,再把out方法改一下就可以了。public void out(int m) throws Exception { Node p = head;Node pre = null;int count = 1;while (curlen > 0) { if (count == m) { System.out.print(p.getData() + " ");...
设计一个带头结点的循环单链表类,实现约瑟夫环问题;设编号为1,2,…,n(n>0)个人按顺时针方向围坐-圈,每人持有一个正整数密码.开始时任意给出一个报数上限值m从第一个人开始顺时针方向自
的循环单链表[2]类,实现约瑟夫环问题; 问题描述:设编号为1,2,…,n(n>0)个设计一个带头结点的循环单链表类,实现约瑟夫环问题; 问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐-圈,每人持有一个正整数密码。开始时任意给出一个报数上限值m从第一个人开始顺时针方向自1起顺序报数。报到m时停止报数...