全文预览

课程设计(论文)--数据库约瑟夫(Joseph)环问题

上传者:梦溪 |  格式:doc  |  页数:26 |  大小:228KB

文档介绍
数后,报到的那个结点被删除,它的password被记录下,由它的下一个结点开始逆方向报数………如此循环,直到循环链表里只剩下一个结点,那就是问题所求的结果。具体到问题上,还需要创建一个Joseph类,由构造函数来初始化,输入所有的人数,也就是表长,然后指定由第几个人开始报数。在Joseph类中定义一个GetWinner()函数,由它来实现获得最后的胜利者。并在该类中设置一个判断语句来确定先由顺时针报数并淘汰了一个人之后,再按逆时针顺序报数,如此交替进行Р2.4建立结点NodeР链表都是由一个个结点组成,由于结点的不同,组成的链表也不同。因此需要创建双向链表结点。由于每一个结点有一个密码和一个序号,所以可以将结点结构体定义为:Рtypedef struct NodeР{Рint data;Рint password;Рstruct Node *next;Р}Node, *LinkList;Р;} РpasswordРdataР图2.4 结点DnodeР3 程序流程图Р开始Р定义各种变量Р调用jiemian(); 输出界面Р调用GetPersonNumber() ;输入参与人数Р调用GetFirstCoutValue();输入所要确定的上限值Р调用CreatLinkList();构造单链表Р调用InitLinkList();初始化单链表Р调用GetOutputOrder();开始进行约瑟夫环的操作Р调用printResult();输出出列顺序Р调用printkey();输出密码Рi=’Y’Р输入一数值iР结束Р假Р3.1主程序流程图Р真Р Рdo-while语句Р3.2子程序流程图Р Р重新输入一数值Р图4-2 РpersonNumber>30||РpersonNumber<=0Р假Р返回参数Р输入一数值Р定义变量personNumberРGetPersonNumber()Р真

收藏

分享

举报
下载此文档