////joseph环
//时间:05/07/04
//程序:张建波
//输入 n=7 // 3,1,7,2,4,7,4 //输出6 7 4 1 5 3 2
#include <iostream.h>
#include "key.h"
typedef struct person
{ int pwd; //密码
int num; //人数
struct person *next; //指向结构体的指针
}PERSON;
void OutPut(int *a,int n);//输出结果
int CreatPersonList(PERSON *head);// 创建一张链表
int Fx_PersonList(PERSON *head,int n,int *a);//模拟报数
int _f4_main() //函数入口
{
PERSON *head; //定义链表头
cout<<"joseph环 问题模拟!"<<endl;
head=new person; //新建PERSON,并分配内存
int n=CreatPersonList(head); // 创建一张链表,同时返回人数 n
int *a=new int[20]; //保存输出的结果
int x=Fx_PersonList(head,n,a); //模拟报数,同时返回出队人数 count
OutPut(a,x); //输出序列
InitKey();//键盘中断
return 0;
}
int CreatPersonList(PERSON *head){
int n,m,i;
PERSON *p,*q;
cout<<"\n请输入 n=";
cin>>n;
p=head; //p指向表头
for(i=1;i<=n;i++){ //建立链表
cout<<"\n请输入第"<<i<<"的人的报数密码m=";
cin>>m;
p->pwd=m;
p->num=i;
q=new person;
if(i==n)p->next=head; //当 i==n时,循环结束把p1指向表头
else
{
p->next=q;
p=q;
}
}
return n;
}
int Fx_PersonList(PERSON *head,int n,int *a){
PERSON *p1,*p0,*p;
int tm; //临时变量,保存上一密码值
int m; //报数密码 m
int count=1; //出队计数
p0=p1=head; //使p0,p1都指向head头
cout<<"\n请输入 M 的 起始值 m=";
cin>>m;
while(count<=n-1)
{
for(int i=1;i<m;i++)
{ //把 m 重新作为报数上限值
p1=p0;
p0=p0->next;
tm=p0->pwd;
}
m=tm;
p=p0->next;
a[count++]=p0->num; //把每次出队的序号保存在a[x]中
p1->next=p0->next;
delete p0;
p0=p;
}
a[count]=p0->num; //把每次出队的序号保存在a[x]中
p1->next=p0->next;
delete p0;
return count;
}
void OutPut(int *a,int n)
{
cout<<"正确的输出序列为:";
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
}
分享到:
相关推荐
《数据结构实战 -- Joseph 环的实现(C实现源码)》 约瑟夫环问题,又称为约瑟夫环序列,是一个经典的理论问题,来源于一个古老的传说。在这个问题中,人们围成一个圈,从某个人开始按顺序报数,每次数到特定数字的...
各位试试看吧,还可以的: ...一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,...
Joseph环,也称为约瑟夫环问题,是数据结构领域的一个经典算法问题,源自一个古老的犹太人传说。这个问题的基本设定是:人们围成一个圈,从某个人开始按顺时针方向计数,每数到特定数值的人将被排除,然后从下一个人...
大二数据结构课程设计joseph环程序的源代码
### 数据结构课程设计成品 joseph环 #### 题目背景及分析 ##### 题目概述 本课程设计的任务是实现一个约瑟夫环(Josephus problem)问题的解决方案,该问题涉及到一系列个体(本题中为编号从1到n的人)围成一个...
根据给定的信息,我们可以深入探讨该课程设计项目中涉及的关键数据结构和算法概念,特别是针对Joseph环问题的解决方案。 ### 数据结构与算法:Joseph环问题 #### 一、背景介绍 Joseph环问题是一个经典的计算机...
数据结构-约瑟夫环-课程设计 本课程设计报告旨在解决约瑟夫环问题,并通过双向循环链表来改进该问题。约瑟夫环是一个古老的数学问题,通过程序语言来解决该问题。 需求分析 在本课程设计中,我们需要解决约瑟夫环...
"Joseph环"是一种著名的算法...总之,Joseph环问题是一个很好的实践平台,它能够让学生在实践中巩固数据结构和算法知识,提升问题解决能力。通过这样的课程设计,学生可以深入理解链表数据结构及其在实际问题中的应用。
本次课程设计的主题是“约瑟夫环(Josephus Problem)”,这是一种基于数组或链表的数据结构问题,具有较高的理论研究价值和实际应用背景。 约瑟夫环源于一个古老的故事,讲述的是在战争中,被困的士兵们按照一定的...
### 数据结构课程设计Joseph环知识点解析 #### 一、引言 随着计算机技术的飞速发展,数据结构作为计算机科学的基础之一,其重要性日益凸显。数据结构是计算机存储、组织数据的方式,对于提高程序效率至关重要。本次...
根据提供的文件内容,可以看出这是一个关于Joseph环问题的数据结构课程设计报告。Joseph环问题,也称为约瑟夫问题或约瑟夫斯环,是一个著名的理论问题,涉及一组人围成一圈,并按照指定的步长进行计数,计数到的人会...
《杭电数据结构joseph环.pdf》是一份关于数据结构课程设计的报告,主要讨论了Joseph环问题的实现。Joseph环,又称约瑟夫问题,是一个著名的理论问题,源自古罗马的一种传说。在这个问题中,人们围成一个圈,按照...
约瑟夫环-数据结构 joseph.doc 约瑟夫环是数据结构中的一种特殊的循环链表结构,它可以用来解决约瑟夫问题。约瑟夫问题是指:n 个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数),一开始任选一个正整数...
“数据结构及算法——joseph环” 数据结构及算法是计算机科学的基础课程之一,对于计算机专业学生和程序员来说都是必修的课程。在本文档中,我们将讨论一种特殊的算法——joseph环,并对其进行详细的分析和实现。 ...
【约瑟夫环问题】是数据结构领域中的一个重要问题,主要涉及到线性表和循环链表的数据结构。问题源于一个假设的情景:n个人按照顺时针方向围坐成一圈,每个人都拥有一个唯一的正整数作为其“密码”。游戏开始时,...
《Joseph环:数据结构课程设计解析》 Joseph环,又称为约瑟夫问题,是一个源自古罗马传说的著名算法问题,常被用于数据结构和算法的教学中,旨在考察链表操作和递归思维。该问题的基本设定是:n个人围成一圈,按...
在数据结构和算法的领域,约瑟夫环通常被用来探讨链表、队列、栈等数据结构的应用,以及递归和循环的解决策略。它涉及到的主要知识点包括: 1. **链表操作**:实现约瑟夫环通常会用到链表,因为链表可以方便地进行...
Joseph环问题描述如下: 编号是2,n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值1开始顺序报数,报到m的人出列,将他的密码作为新的1报数,如此下去,直到所有...