一、需求分析

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语言模拟实现相关推荐

  1. c语言课程设计大作业模版,c语言课程设计报告模板下载

    c语言课程设计报告模板是一款专业的设计模板,对于在大学有需要些设计报告的朋友,可以下载这款模板作为参考,了解设计报告的需求,基本上毕业的论文设计也是在这个基础上严格要求的,欢迎下载使用. C语言介绍 ...

  2. c语言课程设计目的及要求,C语言课程设计目及要求.doc

    C语言课程设计目及要求 C语言课程设计 课程设计要求 课程设计时间及安排 序号课时内容备注1第1次 理论知识讲解2第2次理论,选题,各班班长汇总选题结果(注意协调,每班同一个题目不超过2组,每组不超过 ...

  3. c语言课程设计商品销售系统,c语言课程设计商品销售管理系统.pdf

    C语言课程设计商 品销售管理系统 1 2020 年 4 月 19 日 文档仅供参考 商品销售管理系统 目录 一. 需求分析 2 二.概要设计 2 三.详细设计 4 四.调试分析 14 五.用户手册 1 ...

  4. 学生成绩统计c语言课程设计,学生成绩管理系统-C语言课程设计

    记一次课程设计作业 学生成绩管理系统#include #include #include #include /* 学生成绩管理系统介绍 2017C语言课程设计  202160936 1.支持将数据保存 ...

  5. 南京航空大学c语言课程设计,南京航空航天大学C语言课程设计报告.doc

    南京航空航天大学C语言课程设计报告 程序主要功能: 电话薄管理系统要求实现一个电话薄系统的基本管理功能,包括 创建电话薄 分屏显示电话薄中的所有记录 向电话薄中插入一条记录 删除一条已经存在的记录项 ...

  6. c语言课程设计总结心得大全,c语言课程设计的心得体会

    c语言课程设计的心得体会 相关内容: 课程设计的理论产生于对课程设计实践的考察.下面是第一范文网为大家带来的课程设计心得体会,希望可以帮助大家.课程设计心得体会范文1:机械设计课程设计心得体会经过一个 ...

  7. c语言课程设计自动答题系统,C语言课程设计-单项选择题标准化考试系统设计.doc...

    PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目:单项选择题标准化考试系统设计 院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 学 号: 姓 ...

  8. c语言课程设计报告之迷宫,C语言课程设计-迷宫游戏

    <C语言课程设计-迷宫游戏>由会员分享,可在线阅读,更多相关<C语言课程设计-迷宫游戏(15页珍藏版)>请在人人文库网上搜索. 1.计算机技术基础课程设计C语言设计报告题目:完 ...

  9. c语言课程设计作业图书管理系统,C语言课程设计图书馆管理系统程序代码.doc

    C语言课程设计图书馆管理系统程序代码.doc includestdio.h includewindows.h includestring.h includeconio.h define M 100 s ...

  10. c语言课程设计 职工信息管理系统,C语言课程设计-职工信息管理系统程序设计.doc...

    C语言课程设计-职工信息管理系统程序设计 C语言课程设计报告 设计题目:职工信息管理系统程序设计 课程设计评语2 目 录3 1.课程论文题目4 2.程序设计思路4 3.功能模块图5 4.数据结构设计5 ...

最新文章

  1. 为了不让GPU等CPU,谷歌提出“数据回波”榨干GPU空闲时间,训练速度提升3倍多...
  2. 干货 | 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
  3. 艾伦·图灵破译纳粹密码,被视为计算机和人工智能领域的先驱。
  4. Erlang基础学习总结2
  5. (chap3 数据链路) 介质型网络
  6. Felgo简介--Qt开发者的福音
  7. 设置TextField内文字距左边框的距离
  8. gitlab服务器性能,gitlab服务器搭建
  9. 51单片机程序执行流程详细分析
  10. 复杂性研究面临的难题
  11. 日版IPhone5完美上3G
  12. 史上最简单的 MySQL 教程(十二)「列属性 之 唯一键」
  13. iOS面试题-UI篇
  14. 《暗黑破坏神》经典爆笑小说
  15. CSS,font-family,好看常用的中文字体
  16. ncist网络空间安全专业护网方向认知实习笔记2021.12 DAY2.1
  17. C# + Ext.Net打印
  18. JavaScript 中的Element对象
  19. 云表MES系统助力小型企业
  20. 按键为什么要进行消抖

热门文章

  1. 网络流进阶与实例分析
  2. shell脚本telnet自动登录并执行命令
  3. Google最强模型BERT出炉,NLP还有哪些值得期待的发展?
  4. VUE加载动画3步就搞定
  5. WiFI Display 无线投屏花屏问题分析
  6. Linux之高级网络配置(bond,team以及网桥的搭建)
  7. VS之listview使用
  8. 天猫双十一成交额突破3723亿元
  9. oracle rac实例停止,用srvctl 命令停止RAC 数据库某个实例
  10. XP密码忘了怎么办?