完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
题目:
n个人围成一圈(编号依次为:0,1,2...n-1),从第一个人开始报数,1,2,……数到m者出列,再从下一个开始重新报数,数到m者再出列……。 下面的程序中,用不带附加表头的循环单链表来模拟约瑟夫环,且只设指向最后一个元素的尾指针。算法的思想是,第一步,先将每个人的编号追加到一个通过尾指针标识的循环单链表中。第二步,从首元素开始计数,数到m的取下这个元素,并追加到另一个用尾指针标识的循环单链表中……直到全部元素都取下。第三步,输出最后建立的循环单链表。请编写函数,完成第三步工作:输出通过尾指针标识的循环单链的全部元素。 函数接口说明: void show(struct Node *r);//show data 其中r是指针,指向无附加表头的循环单链表的最后一个结点 裁判程序样例: #include 输入样例: |
|
相关推荐
1个回答
|
|
输出样例:
[] [3,7,2,8,5,4,6,1,0] 我好气! 题目明明只说了 输出 而且分析程序来看明明show函数也只会运行一次 为什么就段错误啊! 明明只是个简简单单的循环链表输出 非要让我们猜题意 还好pta现在有自定义样例测试了...不然我一辈子都de不出来bug 原因是这样的 我的代码一直段错误 直到我尝试只输出一个‘?’却发现他给我输出了两个问号 输出r -> data段错误 说明r可能是空的 所以...我用了这样一个神奇的东西 void show(struct Node *r) { if (r) { printf("?"); } else { printf("!"); } } “输出结果:!?” !果然! 第一次的程序 循环链表是个空的 完全是空的 第二次再运行的时候才会有链表 如果直接输出的话才能正常运行 void show(struct Node *r) { if (r) { struct Node *p; p = r -> next; int fir = 0; printf("["); while(p != r -> next || fir == 0) { if (!fir) { fir = 1; printf("%d",p -> data); } else { printf(",%d", p -> data); } p = p -> next; } printf("]"); } else { printf("[]/n"); } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
“0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!
1090 浏览 1 评论
963 浏览 0 评论
【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库
5776 浏览 1 评论
防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4
989 浏览 0 评论
不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)
3280 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 20:54 , Processed in 0.552725 second(s), Total 70, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号