资源描述:
《上机指导(第2章)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实习指导[实习题目]:约瑟夫环问题。[实习内容]:首先,建立一个单向循坏链表,并实现打卬、査找、删除等操作,在此基础上,实现约瑟夫环问题。约瑟夫问题的一-种描述是:编号为1,2,…,n的n个人按顺时针方向围朋一圈,每人持有一个密码(正整数)。一开始任选一个幣数作为报数上限值叫从第一个人开始顺时针白1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,按照出列顺序打印岀各人的编号。要求利用单向循环链表作为存储结
2、构。[实习目的]:通过实现单向循环链表的建立、查找、删除等操作,熟悉循坏链表结构的基本特点,掌握利用链表结构解决具体问题的方法。[实习步骤]:1.建立一个长度为10的单向循环链表(暂不实现删除操作)•基本思路首先调用创建操作,读入10个止整数,建立一个不带头结点的循环单链表,尾指针指向尾结点。然后调用打印操作,将建好的单向循环链表打印输出。结点的数据域是一个整型量。•基本框架#include#includetypedefintElemType;typedefstructCLNode{E
3、lemTypedata;structCLNode*next;}CLNode,*CLinkList;/*以F是函数原形说明。注意函数头后面有分号。*/CLinkListcrt_clinklist(void);voidpm_clinklist(CLinkListtail);/*以下是函数定义。注意函数头后ifii无分号。*/CLinkListcrt_clinklist(void)/*建立单向循环链表的子函数*/voidpm_clinklist(CLinkListtail)/*打印单向循环链表的子函数*/voidmain(voi
4、d){CLinkListmy_clist;my_clist=crt_clinklist();pm_clinklist(my_clist);注意:程序中名称的大小写前后要一致。要点提示建表操作的基本过程如下:CLinkListcrt_clinklist(void)/*建立一个不带头结点的、采用尾指针的单向循环链表*/{CLinkListtail=NULL;CLNode*s,*head=NULL;intfirst=l;打印输入提示,如“请输入若干个止整数(用空格分隔),并用-1结束:”将第一个数读入x;当x不是结束标志(如-1
5、)时,循环做如下处理:{申请一个新结点S;将x送到s的data域;if(first==1){head=s;tail=s;first=O;}else{用尾插法将s插入表尾;}读入下一个数x;if(tail!=NULL)tail->next=head;return(tail);•测试数据10个任意正整数:(19,14,23,01,68,20,84,27,55,11)1.建立一个长度为10的单向循环链表,并实现删除操作•基本思路在前面已经实现的单向循环链表的基础上,增加删除第i个元素的操作。•基本框架在询而程序松架的基础上,增加
6、删除操作的函数定义,即增加如下函数的定义:CLinkListdel_clinklist(CLinkListtail,inti)注意还要加上相应的函数原形说明和函数调用语句。•要点提示CLinkListdel_clinklist(CLinkListtail,inti){CLNode*q,*pre;pre=tail;q=tail->next;pre和q同步向前移动i—1次;删除q;/*注意只剩一个结点的情况以及被删结点是尾结点的情况*/return(tail);}主程序的基本过程如2voidmain(void){CLinkLi
7、stmy_clist;my_clist=crt_clinklist();prn_c1ink1ist(my_clist);提示输入待删结点的序号i;读入i;my_clist=del_clinklist(my_clist,i);prn_clinklist(my_clist);}•测试数据10个任意正整数:(19,14,23,01,68,20,84,27,55,11)待删结点的序号i=5删除i号结点后的表:(19,14,23,01,20,84,27,55,11)1.用单向循环链表实现约瑟夫环问题•基本思路在前面程序的基础上,实现
8、约瑟夫坏问题:(1)修改结点结构的定义,设置两个数据域:序号域和密码域。(2)参考删除操作,定义一个函数:voidgame(CLinkListtail,intflrst_number),按游戏规则反复执行删除操作,并打印删除结点的序号,盲到表空为止。(3)根据结点结构的变化,相应修改其它函数。•基本框架