扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这个就是约瑟夫环问题的实际场景,有一种是要通过输入n,m,k三个正整数,来求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素。
创新互联建站是一家专注于网站建设、网站制作与策划设计,库车网站建设哪家好?创新互联建站做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:库车等地区。库车做网站价格咨询:028-86922220
printf(num:%d\tval:%d\n,q-data.num,q-data.val); //输出最后一个结点 free(q); //释放最后一个结点 free(head); //释放头结点 printf(约瑟夫环结束,欢迎下次光临~·~\n);} //程序结束。
第二个问题错误原因是在josephRing函数中,出队节点被释放掉后,没有做前一节点的next指向后一节点,比如p1-p2-p3,释放p2时要做p1-p3处理,否则循环回来的话p1的next指针仍然指向p2,而p2已被释放掉,必然报错。
p-num=i;//p没有(值),这样容易出大问题 建议:首先你要有一个思路,想象一下,n个人手拉(链)手,从编号为1的人开始报数,执行约瑟夫循环过程。
1、约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,..n分别表示)围坐在一张圆桌周围。
2、http://blog.16com/asm_c/blog/static/2482031132011111210430403/ 参考。
3、printf(num:%d\tval:%d\n,q-data.num,q-data.val); //输出最后一个结点 free(q); //释放最后一个结点 free(head); //释放头结点 printf(约瑟夫环结束,欢迎下次光临~·~\n);} //程序结束。
4、他们都是用链表做的。我没用链表做。。很简单的写了一个。。
5、s;for(int j = n; j=1; j--){ s1=(s1+m-1)%j;if(s1== 0) s1 = j;int w = P.Getnode(s1 - 1);P.Remvoe(s1 - 1);P.Insert(w,n-1);} } 以前学C语言的时侯写的,希望对你有用。
1、printf(num:%d\tval:%d\n,q-data.num,q-data.val); //输出最后一个结点 free(q); //释放最后一个结点 free(head); //释放头结点 printf(约瑟夫环结束,欢迎下次光临~·~\n);} //程序结束。
2、//使用q为起始点 do{ i=0;//避免m减一后为零的问题 while(i!=m){ q=q-next;i++;} p=q-next;q-next=p-next;printf( %d,p-num);m=p-val;//你少了这一步。
3、链表方法 这个就是约瑟夫环问题的实际场景,有一种是要通过输入n,m,k三个正整数,来求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素。
4、怎么可能就好了,不敢细看,为何不把调用的写在上面?函数调用参数就有错误,CreateList(&L),L在main函数中是一个指针,接收的就应该是二级指针,而你用地址接收了。把所有程序写在main函数中估计都比现在短。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流