数据结构课程设计之约瑟夫问题

设计题目:3.3“银行排队系统”的设计与实现P44 ........................................................... 错误!未定义书签。

一、设计要求 . ................................................................................................................................. 错误!未定义书签。

1.问题描述 . ........................................................................................................................... 错误!未定义书签。 2.需求分析 . ........................................................................................................................... 错误!未定义书签。 二、概要设计 . ................................................................................................................................. 错误!未定义书签。

3.系统功能设计 .................................................................................................................... 错误!未定义书签。 三、模块设计 . ................................................................................................................................. 错误!未定义书签。

1.模块设计 . ........................................................................................................................... 错误!未定义书签。 2.系统子程序及功能设计 .................................................................................................... 错误!未定义书签。 3. 函数主要调用关系图 ...................................................................................................... 错误!未定义书签。 1.数据类型定义 .................................................................................................................... 错误!未定义书签。 2.系统主要子程序详细设计 ................................................................................................ 错误!未定义书签。 五、测试分析 . ................................................................................................................................. 错误!未定义书签。 六、用户手册 . ................................................................................................................................. 错误!未定义书签。 七、调试报告 . ................................................................................................................................. 错误!未定义书签。 八、程序清单 . ................................................................................................................................. 错误!未定义书签。 设计题目:6.4.1二叉排序树基本操作的实现盘P134 ............................................................... 错误!未定义书签。

一、设计要求 . ................................................................................................................................. 错误!未定义书签。

1.问题描述 . ........................................................................................................................... 错误!未定义书签。 2. 需求分析 . ......................................................................................................................... 错误!未定义书签。 二、概要设计 . ................................................................................................................................. 错误!未定义书签。

1.主界面设计 . ....................................................................................................................... 错误!未定义书签。 2. 存储结构设计 .................................................................................................................. 错误!未定义书签。 3. 系统功能设计 .................................................................................................................. 错误!未定义书签。 三、 模块设计 . ............................................................................................................................... 错误!未定义书签。

1.模块设计 . ........................................................................................................................... 错误!未定义书签。 2. 系统子程序及功能设计 .................................................................................................. 错误!未定义书签。 3. 函数主要调用关系图 ...................................................................................................... 错误!未定义书签。 四、详细设计 . ................................................................................................................................. 错误!未定义书签。

1.数据类型定义 .................................................................................................................... 错误!未定义书签。 2. 系统主要子程序详细设计 .............................................................................................. 错误!未定义书签。

五、测试分析 . ......................................................................................................................................... 错误!未定义书签。 六、 用户手册 . ....................................................................................................................................... 错误!未定义书签。 七、 调试报告 . ....................................................................................................................................... 错误!未定义书签。 八、程序清单 . ......................................................................................................................................... 错误!未定义书签。 设计题目:2.4.2约瑟夫问题P34 ................................................................................................. 错误!未定义书签。 一、设计要求 . ........................................................................................................................................................................... 2

1.问题描述 . ..................................................................................................................................................................... 2 2. 需求分析 . ................................................................................................................................................................... 2 二、概要设计 . ........................................................................................................................................................................... 2

1.主界面设计 . ................................................................................................................................................................. 2

2. 存储结构设计 .................................................................................................................................................... 2 3. 系统功能设计 .................................................................................................................................................... 3 三、模块设计 . ................................................................................................................................................................... 3

1.模块设计 . ............................................................................................................................................................. 3

第 1 页 共 12 页

2. 系统子程序及功能设计 .................................................................................................................................... 3 3. 函数主要调用关系图 ........................................................................................................................................ 3 四、详细设计 . ................................................................................................................................................................... 3

1.数据类型定义 ...................................................................................................................................................... 3 2. 系统主要子程序详细设计 ................................................................................................................................ 4 (1)主函数模块设计 ...................................................................................................................................................... 4 五、 测试分析 . ................................................................................................................................................................. 7 六、用户手册 . ................................................................................................................................................................... 8 七、调试报告 . ................................................................................................................................................................... 8 八、程序清单 . ................................................................................................................................................................... 8

设计题目:2.4.2约瑟夫问题P34 一、设计要求 1.问题描述

约瑟夫问题时:编号为1,2,,,,n 的n 个人按顺时针方向围坐一圈,每人持有一个密码。一开始人性一个正整数作为报数上限值m, 从第一个人开始顺时针方向自1开始顺序报数,报到m 时停止报数。报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

2.需求分析

输入形式:两个整数n 和m ;输出形式:在一行中输出n 个整数;程序功能:能够输出n 个人的出列编号;例如:输入20 7;输出6,1,4,7,2,3,5

二、概要设计 1.主界面设计

约瑟夫问题界面设计并复杂,根据提示输入数,运行结果如下:

图3-1 主界面

2.存储结构设计

本系统采用循环链表的存储结构, struct Node//循环节点的定义

第 2 页 共 12 页

{

int number; Node *next; };

//编号

//尾指针

3.系统功能设计

本系统分为两部分;1用户指定上限值;2读取每人的密码。

三、模块设计 1.模块设计

图3-2 模块调用示意图

2.系统子程序及功能设计

本系统中5个函数,包括主函数。各函数功能如下:

(1)

Node *CreateList(Node *L,int &n,int &m);//建立约瑟夫环函数 (2)void Joseph(Node *L,int n,int m);//输出每次出列号数函数 (3)Node *DeleteList(Node **L,int i,Node *q);//寻找每次出列人的号数 (4)int LengthList(Node *L);//计算环上所有人数函数

3.函数主要调用关系图

图3-3 系统函数调用关系图

四、详细设计 1.数据类型定义

(1)循环节点的定义

第 3 页 共 12 页

struct Node {

int number; Node *next;

};

(2)全局变量定义 int n, m;

2.系统主要子程序详细设计

(1)主函数模块设计 void main()

{ Node *L; L=NULL;

int n, m;

cout>n;

if(n

else {

cout>m;

if(m

L=CreateList(L,n,m); Joseph(L,n,m); } }

system("pause");

//循环节点的定义

//编号

//尾结点

//主函数

//初始化尾指针

//环的长度

//人数异常处理

//号数异常处理

//重新给尾指针赋值第 4 页 共 12 页

(2)建立一个约瑟夫环(尾插法) Node *CreateList(Node *L,int &n,int &m) { Node *q;

for(int i=1;inumber=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

(3)输出每次出列的人

void Joseph(Node *L,int n,int m) { int k;

cout>k;

//输出每次出列的人

if(kn){cout

第 5 页 共 12 页

cout

for(int i=1;i

Node *q = new Node;

if(i==1) q=DeleteList(&L,k+m-1,q); else q=DeleteList(&L,m,q);

coutnumber

coutnumber

(4)寻找每次出列的人

Node *DeleteList(Node **L,int i,Node *q) {

if(i==1) i+=LengthList(*L); Node *p; p=*L; int j=0;

while(jnext;j++;} q = p->next;

p->next=p->next->next; *L = p->next; return(q); }

(5)计算环上的人数 int LengthList(Node *L) {

if(L){cout

//第一个出列人的号数

//释放出列人的存储空间

//寻找每次出列的人

//顺序依次出列情况的处理方式

//计算环上的人数

//异常处理

第 6 页 共 12 页

{ int i=1;

Node *p=L->next; while(p!=L) { i++; p=p->next; } return(i); } }

五、测试分析

1, 在主菜单下按照提示输入数字,如下,输入的数字如下所示

图3-4 输入界面

2,按下enter 键可得到以下结果

第 7 页 共 12 页

图3-4 输出界面

六、用户手册

用户只需在主界面上输入初始值为20,m=7,7个人的密码输入3,1,7,2,4,8,4.

七、调试报告

在调试过程中遇到了很多问题,在这些问题中有逻辑错误也有语法错误,我是先通过调试检查代码找出其中的语法错误然后通过设置断点找到逻辑错误。实在找不到就请教大神帮忙!嘿嘿!!!用到的循环链表有关的知识,虽然中间有很多的失败,但通过思考和讨论,最终测试成功。

八、程序清单

#include using namespace std; struct Node {

int number; 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);

第 8 页 共 12 页

void main() { Node *L; L=NULL; int n, m;

cout>n;

if(n

else {

cout>m;

if(m

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;inumber=i; p->next=NULL;

//主函数

//初始化尾指针

//环的长度

//人数异常处理

//号数异常处理

//重新给尾指针赋值

//建立一个约瑟夫环(尾插法)第 9 页 共 12 页

if(i==1) L=q=p; else {

q->next=p; q=q->next; } }

q->next=L;

if(L!=NULL){return(L);}

else cout

}

void Joseph(Node *L,int n,int m) { int k;

cout>k;

if(kn){cout

cout

Node *q = new Node;

if(i==1) q=DeleteList(&L,k+m-1,q); else q=DeleteList(&L,m,q);

coutnumber

coutnumber

第 10 页 共 12 页//工作指针的初始化

//返回尾指针 //尾指针异常处理

//输出每次出列的人

//第一个出列人的号数

//释放出列人的存储空间 //输出最后出列人的号数

}

Node *DeleteList(Node **L,int i,Node *q) //寻找每次出列的人 {

if(i==1) i+=LengthList(*L);

Node *p;

p=*L;

int j=0;

while(jnext;j++;}

q = p->next;

p->next=p->next->next;

*L = p->next;

return(q);

}

int LengthList(Node *L)

{

if(L){cout

else

{

int i=1;

Node *p=L->next;

while(p!=L)

{

i++;

p=p->next;

}

return(i);

}

}

第 11 页 共 12 页 //顺序依次出列情况的处理方式 //计算环上的人数 //异常处理

第 12 页 共 12 页

设计题目:3.3“银行排队系统”的设计与实现P44 ........................................................... 错误!未定义书签。

一、设计要求 . ................................................................................................................................. 错误!未定义书签。

1.问题描述 . ........................................................................................................................... 错误!未定义书签。 2.需求分析 . ........................................................................................................................... 错误!未定义书签。 二、概要设计 . ................................................................................................................................. 错误!未定义书签。

3.系统功能设计 .................................................................................................................... 错误!未定义书签。 三、模块设计 . ................................................................................................................................. 错误!未定义书签。

1.模块设计 . ........................................................................................................................... 错误!未定义书签。 2.系统子程序及功能设计 .................................................................................................... 错误!未定义书签。 3. 函数主要调用关系图 ...................................................................................................... 错误!未定义书签。 1.数据类型定义 .................................................................................................................... 错误!未定义书签。 2.系统主要子程序详细设计 ................................................................................................ 错误!未定义书签。 五、测试分析 . ................................................................................................................................. 错误!未定义书签。 六、用户手册 . ................................................................................................................................. 错误!未定义书签。 七、调试报告 . ................................................................................................................................. 错误!未定义书签。 八、程序清单 . ................................................................................................................................. 错误!未定义书签。 设计题目:6.4.1二叉排序树基本操作的实现盘P134 ............................................................... 错误!未定义书签。

一、设计要求 . ................................................................................................................................. 错误!未定义书签。

1.问题描述 . ........................................................................................................................... 错误!未定义书签。 2. 需求分析 . ......................................................................................................................... 错误!未定义书签。 二、概要设计 . ................................................................................................................................. 错误!未定义书签。

1.主界面设计 . ....................................................................................................................... 错误!未定义书签。 2. 存储结构设计 .................................................................................................................. 错误!未定义书签。 3. 系统功能设计 .................................................................................................................. 错误!未定义书签。 三、 模块设计 . ............................................................................................................................... 错误!未定义书签。

1.模块设计 . ........................................................................................................................... 错误!未定义书签。 2. 系统子程序及功能设计 .................................................................................................. 错误!未定义书签。 3. 函数主要调用关系图 ...................................................................................................... 错误!未定义书签。 四、详细设计 . ................................................................................................................................. 错误!未定义书签。

1.数据类型定义 .................................................................................................................... 错误!未定义书签。 2. 系统主要子程序详细设计 .............................................................................................. 错误!未定义书签。

五、测试分析 . ......................................................................................................................................... 错误!未定义书签。 六、 用户手册 . ....................................................................................................................................... 错误!未定义书签。 七、 调试报告 . ....................................................................................................................................... 错误!未定义书签。 八、程序清单 . ......................................................................................................................................... 错误!未定义书签。 设计题目:2.4.2约瑟夫问题P34 ................................................................................................. 错误!未定义书签。 一、设计要求 . ........................................................................................................................................................................... 2

1.问题描述 . ..................................................................................................................................................................... 2 2. 需求分析 . ................................................................................................................................................................... 2 二、概要设计 . ........................................................................................................................................................................... 2

1.主界面设计 . ................................................................................................................................................................. 2

2. 存储结构设计 .................................................................................................................................................... 2 3. 系统功能设计 .................................................................................................................................................... 3 三、模块设计 . ................................................................................................................................................................... 3

1.模块设计 . ............................................................................................................................................................. 3

第 1 页 共 12 页

2. 系统子程序及功能设计 .................................................................................................................................... 3 3. 函数主要调用关系图 ........................................................................................................................................ 3 四、详细设计 . ................................................................................................................................................................... 3

1.数据类型定义 ...................................................................................................................................................... 3 2. 系统主要子程序详细设计 ................................................................................................................................ 4 (1)主函数模块设计 ...................................................................................................................................................... 4 五、 测试分析 . ................................................................................................................................................................. 7 六、用户手册 . ................................................................................................................................................................... 8 七、调试报告 . ................................................................................................................................................................... 8 八、程序清单 . ................................................................................................................................................................... 8

设计题目:2.4.2约瑟夫问题P34 一、设计要求 1.问题描述

约瑟夫问题时:编号为1,2,,,,n 的n 个人按顺时针方向围坐一圈,每人持有一个密码。一开始人性一个正整数作为报数上限值m, 从第一个人开始顺时针方向自1开始顺序报数,报到m 时停止报数。报m 的人出列,将他的密码作为新的m 值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。

2.需求分析

输入形式:两个整数n 和m ;输出形式:在一行中输出n 个整数;程序功能:能够输出n 个人的出列编号;例如:输入20 7;输出6,1,4,7,2,3,5

二、概要设计 1.主界面设计

约瑟夫问题界面设计并复杂,根据提示输入数,运行结果如下:

图3-1 主界面

2.存储结构设计

本系统采用循环链表的存储结构, struct Node//循环节点的定义

第 2 页 共 12 页

{

int number; Node *next; };

//编号

//尾指针

3.系统功能设计

本系统分为两部分;1用户指定上限值;2读取每人的密码。

三、模块设计 1.模块设计

图3-2 模块调用示意图

2.系统子程序及功能设计

本系统中5个函数,包括主函数。各函数功能如下:

(1)

Node *CreateList(Node *L,int &n,int &m);//建立约瑟夫环函数 (2)void Joseph(Node *L,int n,int m);//输出每次出列号数函数 (3)Node *DeleteList(Node **L,int i,Node *q);//寻找每次出列人的号数 (4)int LengthList(Node *L);//计算环上所有人数函数

3.函数主要调用关系图

图3-3 系统函数调用关系图

四、详细设计 1.数据类型定义

(1)循环节点的定义

第 3 页 共 12 页

struct Node {

int number; Node *next;

};

(2)全局变量定义 int n, m;

2.系统主要子程序详细设计

(1)主函数模块设计 void main()

{ Node *L; L=NULL;

int n, m;

cout>n;

if(n

else {

cout>m;

if(m

L=CreateList(L,n,m); Joseph(L,n,m); } }

system("pause");

//循环节点的定义

//编号

//尾结点

//主函数

//初始化尾指针

//环的长度

//人数异常处理

//号数异常处理

//重新给尾指针赋值第 4 页 共 12 页

(2)建立一个约瑟夫环(尾插法) Node *CreateList(Node *L,int &n,int &m) { Node *q;

for(int i=1;inumber=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

(3)输出每次出列的人

void Joseph(Node *L,int n,int m) { int k;

cout>k;

//输出每次出列的人

if(kn){cout

第 5 页 共 12 页

cout

for(int i=1;i

Node *q = new Node;

if(i==1) q=DeleteList(&L,k+m-1,q); else q=DeleteList(&L,m,q);

coutnumber

coutnumber

(4)寻找每次出列的人

Node *DeleteList(Node **L,int i,Node *q) {

if(i==1) i+=LengthList(*L); Node *p; p=*L; int j=0;

while(jnext;j++;} q = p->next;

p->next=p->next->next; *L = p->next; return(q); }

(5)计算环上的人数 int LengthList(Node *L) {

if(L){cout

//第一个出列人的号数

//释放出列人的存储空间

//寻找每次出列的人

//顺序依次出列情况的处理方式

//计算环上的人数

//异常处理

第 6 页 共 12 页

{ int i=1;

Node *p=L->next; while(p!=L) { i++; p=p->next; } return(i); } }

五、测试分析

1, 在主菜单下按照提示输入数字,如下,输入的数字如下所示

图3-4 输入界面

2,按下enter 键可得到以下结果

第 7 页 共 12 页

图3-4 输出界面

六、用户手册

用户只需在主界面上输入初始值为20,m=7,7个人的密码输入3,1,7,2,4,8,4.

七、调试报告

在调试过程中遇到了很多问题,在这些问题中有逻辑错误也有语法错误,我是先通过调试检查代码找出其中的语法错误然后通过设置断点找到逻辑错误。实在找不到就请教大神帮忙!嘿嘿!!!用到的循环链表有关的知识,虽然中间有很多的失败,但通过思考和讨论,最终测试成功。

八、程序清单

#include using namespace std; struct Node {

int number; 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);

第 8 页 共 12 页

void main() { Node *L; L=NULL; int n, m;

cout>n;

if(n

else {

cout>m;

if(m

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;inumber=i; p->next=NULL;

//主函数

//初始化尾指针

//环的长度

//人数异常处理

//号数异常处理

//重新给尾指针赋值

//建立一个约瑟夫环(尾插法)第 9 页 共 12 页

if(i==1) L=q=p; else {

q->next=p; q=q->next; } }

q->next=L;

if(L!=NULL){return(L);}

else cout

}

void Joseph(Node *L,int n,int m) { int k;

cout>k;

if(kn){cout

cout

Node *q = new Node;

if(i==1) q=DeleteList(&L,k+m-1,q); else q=DeleteList(&L,m,q);

coutnumber

coutnumber

第 10 页 共 12 页//工作指针的初始化

//返回尾指针 //尾指针异常处理

//输出每次出列的人

//第一个出列人的号数

//释放出列人的存储空间 //输出最后出列人的号数

}

Node *DeleteList(Node **L,int i,Node *q) //寻找每次出列的人 {

if(i==1) i+=LengthList(*L);

Node *p;

p=*L;

int j=0;

while(jnext;j++;}

q = p->next;

p->next=p->next->next;

*L = p->next;

return(q);

}

int LengthList(Node *L)

{

if(L){cout

else

{

int i=1;

Node *p=L->next;

while(p!=L)

{

i++;

p=p->next;

}

return(i);

}

}

第 11 页 共 12 页 //顺序依次出列情况的处理方式 //计算环上的人数 //异常处理

第 12 页 共 12 页


相关文章

  • 软件实习总结报告
  • ********** --约瑟夫环游戏 总结报告 学生姓名:高娃 学 号:11071202 专业班级:计算机11-2 指导教师:李晓旭 宫法明 2012年7月14日 专业实习报告 摘 要 游戏自人类出现以后便日渐完善.进入20世纪后,人类进 ...查看


  • 约瑟夫环课程设计实验报告
  • <数据结构> 课程设计报告 课程名称: 课程设计题目: 姓名: 院系: 专业: 年级: 学号: 指导教师: <数据结构>课程设计 joseph环 计算机学院 2011年12月18日 目 录 1 课程设计的目的---- ...查看


  • 约瑟夫环与八皇后问题--数据结构课程设计实验报告
  • 目 录 一. 问题描述 .................................... 1 二. 问题分析 .................................... 2 三. 数据结构描述............. ...查看


  • 数据结构研究论文
  • 计算机数据结构研究论文 题目: 院系: 计算机科学与信息工程系 专业: 网 络 工 程 班级: (1)班 姓名: 侯 三 杰 学号: 日期: Huffman 编码器与Joseph 约瑟夫环 .Huffman编码器 1. 问题描述: 给出一个 ...查看


  • 网易公开课大全
  • 北卡罗来纳州立大学<体育法> 西卡罗来纳州大学<日语入门> 哥伦比亚大学<病毒学> 亚利桑那大学<宇宙起源> 麻省理工<单变量微积分习题课> 耶鲁大学<塞万提斯的堂吉诃德&g ...查看


  • 论中小学校课程创新的路径选择_叶波
  • 论中小学校课程创新的路径选择 ◆叶波 [摘 要]课程创新的价值追求是当前中小学校课程创新的理性原点.不注重适切性的中小学校课程创新迷失于"体系制造"之中,使国家课程实施付之阙如,缺乏创新的动力之源,缺失内在方法.以适切性 ...查看


  • 财政学教学大纲
  • <财政学>课程教学大纲 适用专业:国际经济与贸易本科 学分:2学分 总学时:32 课程的性质与任务: 本课程是国际经济与贸易专业的专业基础课.通过本课程的学习,正确认识财政与经济的辩征关系,深刻领会财政在国民经济中的重要地位和作 ...查看


  • 王猛:近代中国科技落后的原因
  • 王猛:近代中国科技落后的原因 标签:世博会科技2013-05-01 12:11 星期三 近代中国科技落后的原因 --由世博会想起的 ...................................................... ...查看


  • 思政硕士生文献综述
  • 论高校思想政治教育中的体验式教育 --第二次学术报告暨文献综述 摘要:我们党和国家历来重视思想政治教育工作, 尤其是高校思想政治教育工作,特别是改革开放以来,广大学者在高校思政领域的积极探索,使思想政治教育取得了累累硕果.在新的历史时期,为 ...查看


热门内容