《数据结构上机报告约瑟夫环.pdf》由会员分享,可在线阅读,更多相关《数据结构上机报告约瑟夫环.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第一次上机报告 上机地点:E-207 编译环境:DEV C+一:约瑟夫环问题:编号为 1,2,n 的 n 个人按顺时针方向围坐在一圈,每个人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始按顺时针方向开始报数,报道 m 的人出列,其所持的密码作为新的 m 值,从他所在的顺时针方向的下一个人重新开始从 1 开始报数,若此下去,直到所有的人出列。二:算法分析:首先建立一个结构体,存放编号从 1 到 n 的人的编号和密码;然后以此向结构体中存放密码,用循环链表实现数据的存放;利用循环语句实现出列,并把 p-next=p 作为循环的结束的条件。三:源代码:#includ
2、e using namespace std;typedef struct Joseph/建立结构体 int num;int codes;Joseph*next;Joseph;int main()int m,n,codes=0;Joseph*p,*q,*first;cout请依次输入开始的上报数上限值和 人数 :mn;coutendl;p=(Joseph*)malloc(sizeof(Joseph);first=p;cout请依次输入每个人的密码:”endl;/用单循环链表建立每个人的数据 for(int i=0;icodes;p-num=i+1;p-codes=codes;if(i=n-1)b
3、reak;q=(Joseph*)malloc(sizeof(Joseph);p-next=q;p=q;p-next=first;cout出列的顺序依次为:next!=p)/最后只剩下一个人,该数据的 next 只想自己 for(int i=0;inext;coutnum;coutcodes;p-next=q-next;delete(q);/释放出列结点人的数据空间 system(pause);return 0;四:执行结果:五:上机体会:在建立链表中,指针的指向顺序出错;循环语句的结束条件不能正确的写出;在编译中由于没掌握好 c+语言而出现语法错误;以后应该多多的上机编写程序,在多的练习中,和多的分析中掌握好编程和数据结构。