资源描述:
《课程设计---joseph环》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、课程设计说明书NO.1Joseph环1.课程设计的目的.编号是1,2,3,4,5,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数).一开始任选一个正整数作为报数上限值m,从第一个人开始顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他在顺时针的方向下一个人开始重新从1报数,如此下去,直到所有人全部出列为止.设计一个程序来求出出列顺序.2设计方案论证2.1设计思路:首先,定义一个结构体,将个人的信息写入其中内容包括个人的顺序号(Num),个人的密码M(随机输入的值)及指针.第二,再
2、将每个人的信息存储于一个单向循环链表内.第三,根据题目要求编写程序,开始随机把一个数赋给m,开始报数(查找)则将顺序号为m的数字提出列,并将其的密码(随机输入的)赋给m.最后,m有了新值,再从第一个人开始重复上面第三步,直到所有人的顺序号都被调出,结束程序。2.2设计方法:利用单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编号.输入数据:建立输入处理输入数据,输入m值,n,输入每一个人的密码,建立单循环链表.输出形式:建立一个输出函数,将正确的输出序列.沈阳大学课程设计说明书NO.22.2总体功能框图建立存储数据的结点连接成
3、循环链表Builtpeople()赋初值N计算begin()建立存储出列顺序的链表BuiltResult_Link()输出link()沈阳大学课程设计说明书NO.32.3流程图进入主菜单构造单循环链表按照密码值依次向下进行搜索构造数组删除节点并取值将删除的节点值放入数组中输出数组沈阳大学课程设计说明书NO.42.4算法structpeople//表示每个人的信息结构体{intNo;//表示该人序号intNum;//表示报的数intcode;//表示该人的密码structpeople*next;//指向下一个人}Head;//链表的头指针
4、voidBuiltPeople()//建立有N个人的一个循环链表{inti;structpeople*newnode,*p;//newnode为新建结点,p指向下一个结点Head.No=0;//建立头结点Head.Num=0;Head.code=0;Head.next=&Head;p=&Head;//链表生成}voidBuiltResult_Link()//建立存储N个人出列顺序的链表{inti;structLabel*newnode,*p;//newnode为新建结点,p指向下一个结点ResultHead.No=0;ResultHea
5、d.next=NULL;p=&ResultHead;//链表生成}沈阳大学课程设计说明书NO.52.5原程序#include"stdio.h"#include"stdlib.h"#include"string.h"#definePeopleMax100//变量,数据类型定义最多100人intN;//表示总人数intM;//表示起始的密码值,即m的值structpeople//表示每个人的信息结构体{intNo;//表示该人序号intNum;//表示报的数intcode;//表示该人的密码structpeople*next;//指向下一个
6、人}Head;//链表的头指针structLabel//表示结果结构体{intNo;//存储序号structLabel*next;//指向下一个结果}ResultHead;//存储结果的链表的头指针voidBuiltPeople()//建立有N个人的一个循环链表{inti;structpeople*newnode,*p;//newnode为新建结点,p指向下一个结点Head.No=0;//建立头结点Head.Num=0;Head.code=0;Head.next=&Head;p=&Head;for(i=1;i<=N;i++){沈阳大学课
7、程设计说明书NO.6newnode=(structpeople*)malloc(sizeof(structpeople));//生成新结点newnode->No=i;newnode->Num=0;newnode->code=i;//初始随机密码rand()%100+1p->next=newnode;//移动指针newnode->next=Head.next;p=p->next;}}voidBuiltResult_Link()//建立存储N个人出列顺序的链表{inti;structLabel*newnode,*p;//newnode为新建
8、结点,p指向下一个结点ResultHead.No=0;ResultHead.next=NULL;p=&ResultHead;for(i=1;i<=N;i++){newnode=(structLabel*)m