- 12
- 0
- 约7.19千字
- 约 14页
- 2019-05-06 发布于安徽
- 举报
实用文案
标准文档
(一)基本问题
1.问题描述
设有编号为1,2,…,n的n(n>0)个人围成一个圈,每个人持有一个密码m。从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。建立模型,确定存储结构。对任意n个人,密码为m,实现约瑟夫环问题。
2.数据结构设计
首先,设计实现约瑟夫环问题的存储结构。由于约瑟夫环问题本身具有循环性质,考虑采用循环链表,为了统一对表中任意结点的操作,循环链表不带头结点。将循环链表的结点定义为如下结构类型:
struct Node
{
int data;
Node *next;
};
其次,建立一个不带头结点的循环链表并由头指针first指示
3.算法设计
工作指针first,r,s,p,q初始化
输入人数(n)和报数(m)
循环n次,用尾插法创建链表
Node *q;
for(int i=1;i=n;i++)
{
Node *p;
p=new Node;
p- data =i;
p-next=NULL;
if(i==1) L=q=p;
else
{
q-next=p;
q=q-next;
}
}
q-next=L;
if(L!=NULL){return(L);}
4、输入报数的起始人号数k;
5、Node *q = new Node;计数器初始化i=1;
6、循环n次删除结点并报出位置(其中第一个人后移k个)
当in时
移动指针m-2次p=p-next;
删除p结点的后一结点q
q=p-next;
p-next=q-next;
*L = p-next;
报出位置后Delete q;
计数器i++;
运行流程图
开始
开始
输入m和n
创建链表
kn-1
移动指针p
删除p后一结点q
指针p后移,k++
输出n
结束
Y
N
代码和相关解释
#includeiostream
using namespace std;
struct Node//循环节点的定义
{
int data;//编号
Node *next;
};
Node *CreateList(Node *L,int n,int m);//建立约瑟夫环函数
void Joseph(Node *L,int n,int m);//输出每次出列号数函数
Node *DeleteList(Node **L,int i,Node *q);//寻找每次出列人的号数
int LengthList(Node *L);//计算环上所有人数函数
void main()//主函数
//在主函数中,完成人数(n)和报数(m)的输入和工作指针的初始化
{
Node *L;
L=NULL;//初始化尾指针
int n, m;
cout请输入人数N:;
cinn;//环的长度
if(n1){cout请输入正整数!;}//人数异常处理
else
{
cout请输入所报数M:;
cinm;
if(m1){cout请输入正整数!;}//号数异常处理
else
{
L=CreateList(L,n,m);//重新给尾指针赋值
Joseph(L,n,m);
}
}
system(pause);
}
Node *CreateList(Node *L,int n,int m)//建立一个约瑟夫环(尾插法)
{
Node *q;
for(int i=1;i=n;i++)
{
Node *p;
p=new Node;
p-data=i;
p-next=NULL;
if(i==1) L=q=p;//工作指针的初始化
else
{
q-next=p;
q=q-next;
}
}
q-next=L;
if(L!=NULL){return(L);}//返回尾指针
else cout尾指针异常!endl;//尾指针异常处理
}
void Joseph(Node *L,int n,int m)//输出每次出列的人
{
int
您可能关注的文档
- SPSS生存分析报告过程.doc
- 供应链网络结构特性分析报告.doc
- 计组实验datalab-handout实验报告材料.doc
- 企业安全系统生产基础知识有限空间部分.doc
- 高等代数教案设计(张禾瑞版).doc
- 高中信息技术算法与程序设计VB(选修).doc
- 化学键化学反应与热能测试.doc
- 器件原理-双极型晶体管特性地测量与分析报告.doc
- 会计电算化毕业论文设计.doc
- 历代所有堪舆相关地主要著作.doc
- 2025-2026学年北师大版九年级物理上学期期末常考题之电功率.pdf
- 2024人教版八年级生物下册第六单元第一章《生物的生殖》每节课分层作业汇编(含两套作业).pdf
- 2026高考历史复习重点知识题型汇编:明清时期.pdf
- 2025-2026学年人教版九年级英语上学期期末常考题之语篇—家人、朋友与周围的人.pdf
- 2026年中考历史材料题19类开放式题答法.pdf
- 2026年中考物理复习重点知识点题型汇编:压强.pdf
- 高中政治必修二《经济与社会》 期末复习易混易错(解析版).pdf
- 关于“把握世界的规律”的命题(原卷版)-2026年高考政治二轮复习(全国通用).pdf
- 2025-2026学年人教版九年级英语上册期末复习核心知识+词汇+语法Unit 2.pdf
- 乡土小说阅读指导与练习-2023年高考语文二轮复习之小说讲练.pdf
最近下载
- 《SBT 11164-2016绿色仓库要求与评价》(2026年)实施指南.pptx VIP
- 宿迁思睿屹新材料有限公司年产3000吨2羟基6萘甲酸项目环境影响修编报告书.pdf VIP
- 金智学工管理系统功能白皮书.pdf VIP
- 2025年度医院党支部组织生活会临床医生个人对照检查材料.doc VIP
- 环境影响评价报告公示:新建热处理淬火、处理金属表面发黑项目环评报告.pdf VIP
- 译林版英语七年级上册首字母(短文篇).pdf VIP
- 《经颅电刺激技术在精神障碍临床应用中的操作规范》.docx
- 2025年福建省宁德市中考数学试卷真题(含标准答案).docx
- GB51110-2015:洁净厂房施工及验收规范.pdf VIP
- 核反应堆设计软件:FLUKA二次开发_(2).FLUKA二次开发环境搭建.docx VIP
原创力文档

文档评论(0)