欢迎来到天天文库
浏览记录
ID:35450913
大小:104.88 KB
页数:5页
时间:2019-03-24
《约瑟夫问题作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、约瑟夫问题求解一.源程序及程序运行结果1.、约瑟夫问题顺序表的实现#includeincludeHstdlib.hnusingnamespacestd;#defineMAXSIZE100〃线性表的最人长度structSeqList{intdata[MAXSIZE];intlength;};typedefSeqList*PSeqList;PScqListInit_ScqList(intn){inti=I;PSeqListSeqListPoint;SeqListPoint=(PSeq
2、List)malloc(sizeof(SeqList));if(ScqListPoint==NULL)returnNULL;elseSeqListPoint->length=0;for(intj=O;jlength++;SeqListPoint->dataLj]=i;i++;}COUt«H原始序列为:“;for(j=0;jlength;j++){cout«ScqListPoint->data[j]«,V,;}return(Se
3、qListPoint);}intDclctc_ScqList(PScqListSeqListPoint,inti)intj;讦(IScqListPoint)printf(M表不存在”);retum(-l);/*表不存在,不能删除元素*/}if(i<0
4、
5、i>SeqListPoint->length-1)/*检查删除位置的合法性*/{printfC*删除位置不合法”);return(0);}fbr(j=i+l;jlength;j++)SeqListPoint->data[
6、j-l]=SeqListPoint->data[j];/*向上移动*/SeqListPoint->length—;return(1);/*删除成功*/}intScqList(PScqListSeqListPoint,ints,intm){intsl,i,w;if(!SeqListPoint->length){printf(”表中无元素”);return(0);1sl=s-1;/*data数组屮b标从()开始*/cout«u输出约瑟夫序列:“;for(匸SeqListPoint->length;i>0
7、;i—){sl=(sl+m-l)%i;/*找到出列元素的卜-标*/w=SeqListPoint->data[s1];printf(n%d“,w);Delete_SeqList(SeqListPoint,s1);/*删除出列元素*/}cout«endl;retum(l);/*成功返回*/}voidmain(){intn,s,m;PSeqListSeqListPoint;coutvv”请输入总人数n:”;cin»n;SeqListPoint=Init_SeqList(n);cout«endl«n请输入报
8、数位置s和退出编号m:cin»s»m;SeqList(SeqListPoint,s,m);"D:MicrosoftVisualStudioMyProjects$5瑟夫作业Debug的瑟夫作业飯2・、约瑟夫问题链表的实现#include#include"stdlib.hHusingnamespacestd;structNode{intdata;structNode*next;};typedefstructNode*PNode;PNodeCreatelist_link(in
9、tn){PNodelist;PNodep,q;inti=l;list=p=(PNode)malloc(sizeof(structNode));〃申请表头结点存储空间if(list!=NULL)p->data=i;for(i=2;i<=n;i++){q=(PNode)malloc(sizeof(structNode));if(q==O)return0;p->ncxt=q;p=q;q->data=i;)q->next=list;1〃创建失败s,intm)elseprintf(HOutofspace!
10、°);return(list);}intjoscphus_LinkList(PNodclist,ir{PNodep,pre;intcount;if(!list){printf(n表中无元素”);return0;}p=list;for(count=l;countnext;printf(”输出约瑟夫序列:“);while(p!=p->next){for(count=1;countnext;}pr
此文档下载收益归作者所有