joseph环c语言课程设计,Joseph环的C语言模拟实现
一、需求分析
1.本演示程序中,限定约定约瑟夫的节点数和密码均不超过100,每个节点的密码均不超过节点个数的两倍,且为方便起见所有密码均根据时间动态生成,程序需输入的有:①生成约瑟环的节点数,②程序的初始密码;若输入超出界,则起用默认值:10
2.程序执行的命令有:输入约瑟夫环的节点和初始密码,约瑟夫环的初始化及动态生成,约瑟夫环的运行演示
3.程序测试:正确输入测试,条件边界输入测试,超边界输入测试
二、概要设计
4.为实现题目要求功能,用单向循环链表来表示约瑟夫环
5.约瑟环中没释放掉一个环节点,则对应在循环链表中释放掉该节点
6.当剩下最后一个节点时,我们不再进行释放,而是输出,得到我们想要的结果!
三、详细设计
1.定义节点数据结构体:
typedef struct{
int num; /*The num for Joseph struct*/
int password; /*Password for Joseph struct*/
}SElemType;
2.定义节点结构体,用来创建循环链表:
typedef struct Joseph{ /*The Node for the ring of Joseph*/
SElemType elem;
struct Joseph *next;
}Joseph;
3.节点初始化函数的定义,用来初始化链表节点:
int InitList(Joseph *l){ /*Initial the the node*/
l=(Joseph *) malloc (sizeof(Joseph));
if(!l)
return OVERFLOW;
return OK;
}
4.约瑟夫链表节点的空间释放:
void FreeNode(Joseph *p){/*Free the node have been deleted*/
Joseph *temp=p;
while(temp->next!=p)
temp=temp->next;
temp->next=p->next;
printf("The node of num:%3d is free "n",p->elem.num);
free(p);
}
5.约瑟夫链表的创建以及随机初始化节点数据域数据:
void Creat_Joseph(Joseph *l,int length){/*creat the password of node by rand()*/
int i;
Joseph *p=l;
l->next=l;
l->elem.num=1;
srand( (unsigned)time(NULL));
l->elem.password=rand()%(length+3)+1;
printf("The flowing is the Joseph Ring created by rand():"n");
printf("The Node num: %3d Password: %3d"n",l->elem.num,l->elem.password);/*print the first node of the ring of Joseph*/
for(i=1;i
Joseph* temp=(Joseph*)malloc (sizeof(Joseph));
p->next=temp;
temp->next=l;
temp->elem.num=i+1;
temp->elem.password=rand()%(2*length)+1;
printf("The Node num: %3d Password: %3d"n",temp->elem.num,temp->elem.password);/*print all the node of the ring of Joseph expect the first one*/
p=p->next;
}
}
6.约瑟夫问题实际过程演示:
void Joseph_Run(Joseph *l, int m){/*do node free by password of node*/
int i,k;
Joseph *temp,*p;
if(l->next==l)
printf("The last Node num is: %d",l->elem.num);/*Print the last Node*/
else{
temp = l;
for(i=1; i
temp=temp->next;
p=temp->next;
k=temp->elem.password;
FreeNode(temp);/*Free The unusefull Node*/
Joseph_Run(p,k);/*Using The Recursive Functions*/
}
}
7.主函数的描述:
void main(){
int num=10;
int m=10;
Joseph *J_list;
printf("Please input the total num of Joseph Nodes( less than 100):");/*input the total num of Joseph Nodes*/
scanf("%d",&num);
if(num<=0||num>=100){
printf("What your input is not accepted,so using 10 instead!"n");/*Using the default to instead*/
num=10;
}
printf("Please input the first node num (less than 100):");/*input the first node num*/
scanf("%d",&m);
if(m<=0||m>=100){
printf("What your input is not accepted,so using 10 instead!"n");/*Using the default to instead*/
m=10;
}
InitList(J_list);
Creat_Joseph(J_list,num);
Joseph_Run(J_list,m);
}
joseph环c语言课程设计,Joseph环的C语言模拟实现相关推荐
- c语言课程设计大作业模版,c语言课程设计报告模板下载
c语言课程设计报告模板是一款专业的设计模板,对于在大学有需要些设计报告的朋友,可以下载这款模板作为参考,了解设计报告的需求,基本上毕业的论文设计也是在这个基础上严格要求的,欢迎下载使用. C语言介绍 ...
- c语言课程设计目的及要求,C语言课程设计目及要求.doc
C语言课程设计目及要求 C语言课程设计 课程设计要求 课程设计时间及安排 序号课时内容备注1第1次 理论知识讲解2第2次理论,选题,各班班长汇总选题结果(注意协调,每班同一个题目不超过2组,每组不超过 ...
- c语言课程设计商品销售系统,c语言课程设计商品销售管理系统.pdf
C语言课程设计商 品销售管理系统 1 2020 年 4 月 19 日 文档仅供参考 商品销售管理系统 目录 一. 需求分析 2 二.概要设计 2 三.详细设计 4 四.调试分析 14 五.用户手册 1 ...
- 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计
记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计 202160936 1.支持将数据保存 ...
- 南京航空大学c语言课程设计,南京航空航天大学C语言课程设计报告.doc
南京航空航天大学C语言课程设计报告 程序主要功能: 电话薄管理系统要求实现一个电话薄系统的基本管理功能,包括 创建电话薄 分屏显示电话薄中的所有记录 向电话薄中插入一条记录 删除一条已经存在的记录项 ...
- c语言课程设计总结心得大全,c语言课程设计的心得体会
c语言课程设计的心得体会 相关内容: 课程设计的理论产生于对课程设计实践的考察.下面是第一范文网为大家带来的课程设计心得体会,希望可以帮助大家.课程设计心得体会范文1:机械设计课程设计心得体会经过一个 ...
- c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...
PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:单项选择题标准化考试系统设计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 ...
- c语言课程设计报告之迷宫,C语言课程设计-迷宫游戏
<C语言课程设计-迷宫游戏>由会员分享,可在线阅读,更多相关<C语言课程设计-迷宫游戏(15页珍藏版)>请在人人文库网上搜索. 1.计算机技术基础课程设计C语言设计报告题目:完 ...
- c语言课程设计作业图书管理系统,C语言课程设计图书馆管理系统程序代码.doc
C语言课程设计图书馆管理系统程序代码.doc includestdio.h includewindows.h includestring.h includeconio.h define M 100 s ...
- c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...
C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...
最新文章
- 为了不让GPU等CPU,谷歌提出“数据回波”榨干GPU空闲时间,训练速度提升3倍多...
- 干货 | 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
- 艾伦·图灵破译纳粹密码,被视为计算机和人工智能领域的先驱。
- Erlang基础学习总结2
- (chap3 数据链路) 介质型网络
- Felgo简介--Qt开发者的福音
- 设置TextField内文字距左边框的距离
- gitlab服务器性能,gitlab服务器搭建
- 51单片机程序执行流程详细分析
- 复杂性研究面临的难题
- 日版IPhone5完美上3G
- 史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」
- iOS面试题-UI篇
- 《暗黑破坏神》经典爆笑小说
- CSS,font-family,好看常用的中文字体
- ncist网络空间安全专业护网方向认知实习笔记2021.12 DAY2.1
- C# + Ext.Net打印
- JavaScript 中的Element对象
- 云表MES系统助力小型企业
- 按键为什么要进行消抖