问题描述:n个人围成一圈,顺序编号。从第一个人开始从1到m报数,凡报到m的人退出圈子,编程求解最后留下的人的初始编号。
程序运行示例:
6 3(两个输入数据之间有空格)
1输入格式:scanf("%d%d",&n,&m);
输出格式:printf("%d\n",p->data);

解决方法:该问题用单链表的方法建立链表存储人数和序号,通过连接首尾达到循环的效果,删除n-1个元素只留一个元素后输出剩余的唯一一个元素,即最后一个元素。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>typedef struct Node{int data;struct Node* next;
}S;S* head_create(){S* head = (S*)malloc(sizeof(S));if(head==NULL) exit(1);head->next=NULL;return head;
}S* Node_insert(S* head,int i,int x){//插入数据 S *p;p=head;int m=0;while(m<i-1){p=p->next;m++;}S* q = (S*)malloc(sizeof(S));q->next=p->next;p->next=q;q->data=x;
}
S* xunhuan(S* head){//将链表的第一个元素与最后一个元素连接 S *p;p=head;while(p->next){p=p->next;} p->next = head->next;
}
S* Node_delete(S* head,int i){//每次删除后返回删除元素前一个元素 S *p,*s;p=head;int m=0;while(m<i-1){p=p->next;m++;}s=p->next;p->next = s->next;free(s);return p;
}void print_SL(S *head,int i)//打印出链表中唯一元素,i>1时会重复输出链表中剩余元素
{S *p;p=head;if(p==NULL) printf("单链表空!\n");else{p=p->next;}int m=0;while(m<i){printf("%d",p->data);p=p->next;m++;}
}main(){int m,n,i;S *s1=head_create();//输入mn scanf("%d%d",&m,&n);for(i=1;i<=m;i++){Node_insert(s1,i,i);} xunhuan(s1);for(i=1;i<m;i++){s1=Node_delete(s1,n);}print_SL(s1,1);return 0;
}

运行结果:

C语言-报数出圈问题(链表实现)相关推荐

  1. C语言约瑟夫报数出圈算法,c语言实现约瑟夫环问题

    (一)基本问题 1.问题描述 设有编号为1,2,-,n的n(n>0)个人围成一个圈,每个人持有一个密码m.从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m ...

  2. c语言程序设计 出圈游戏,出圈游戏程序及设计.doc

    出圈游戏程序及设计 存档资料 成绩: 华东交通大学 课 程 设 计 报 告 书 所属课程名称C程序设计题 目出圈游戏的程序设计院 (系)信息工程学院班 级通信一班学 号20140610080126学生 ...

  3. c语言出圈游戏课设报告,c语言作业 出圈游戏

    #include//头函数 #include #include #define SIZE 100 struct SeqList{ int num; char name[10]; }; int menu ...

  4. C语言之出圈游戏(详解)

    PTA7-5 出圈游戏 用指针实现以下功能:有n个人围成一个圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号. (1)编程提示 每三个人离开,置为0: ...

  5. 出圈c语言,c语言作业 出圈游戏

    #include//头函数 #include #include #define SIZE 100 struct SeqList{ int num; char name[10]; }; int menu ...

  6. C语言约瑟夫报数出圈算法,详解约瑟夫环问题及其相关的C语言算法实现

    约瑟夫环问题 N个人围成一圈顺序编号,从1号开始按1.2.3......顺序报数,报p者退出圈外,其余的人再从1.2.3开始报数,报p的人再退出圈外,以此类推. 请按退出顺序输出每个退出人的原序号 算 ...

  7. 有n个人围成一圈编号1~n,顺序排好,从第一个人开始1到3报数,凡是报到3的人退出圈子,C语言编程出圈顺序

    //可以实现查找,还没有优化,有兴趣者可以试试 #include <stdio.h> void out_loop(int n) {   int i = 0; int j; int flag ...

  8. Python——报数出圈

    编写程序,模拟报数游戏.有n个人围成一圈,顺序编号,从第一个人开始从1到k(假设k=3)报数,报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号. n=int(input ...

  9. c语言程序 出圈游戏,【出圈】 (C语言代码)

    解题思路:        简单易懂 建立一个数组,每次山区轮到的数字 后面的数字一次往前,最后打印出剩下的数字 注意事项:为了避免混乱  数组直接从1 开始 参考代码: #include int ma ...

最新文章

  1. 如何強迫 .Net 應用程式輸出英文的例外訊息
  2. Spring boot 参数校验
  3. lnmp一键安装调优,lnmp,memcache,全文检索
  4. java jar 和 war 包的区别
  5. 2021Lazada开店入驻最新流程Lazada新店运营思路分享
  6. jdk ServiceLoader怎么用
  7. C++二个数组求交集的实现算法(附完整源码)
  8. kali 设置中文字体
  9. 同一个PC只能运行一个应用实例(考虑多个用户会话情况)
  10. P7077-函数调用【拓扑排序,dp】
  11. 《软件需求》阅读笔记之一
  12. C++ linux系统api
  13. python称号_C 语言荣获 2019 年度最佳编程语言称号
  14. Druid数据库连接池配置
  15. 5分钟了解CDN 加速原理
  16. r语言如何计算t分布临界值_医学统计与R语言:四格表卡方还需要连续校正吗?...
  17. 2019川大计算机在福建录取分数线,电子科技大学录取分数线2019(在各省市录取数据)...
  18. IDEA 报错 LoggerFactory is not a Logback LoggerContext but Logback is on the classpath,如何排除依赖冲突
  19. GI 中新的基础架构 --MDNS, gipc 和 gpnp 是如何协同工作的
  20. 关于MP4视频在浏览器上无法播放的问题(没有找到支持的视频格式和mime类型)

热门文章

  1. Caj文件怎么转换成pdf?Caj转pdf在线转换器推荐
  2. Spring Framework系统架构
  3. (附源码)Springboot校园商铺系统 毕业设计 052145
  4. 会计学原理计算机实验,会计学原理实验报告.doc
  5. Mac桌面壁纸文件如何提取里面的壁纸图片?heic动态桌面壁纸怎么导出jpg的图片形式?
  6. Docker网络模式与资源控制管理
  7. [Noip模拟题]绿豆蛙的归宿
  8. Win10无法拖动最大化窗口
  9. 给计算机老师的元旦祝福,2020给老师元旦祝福语
  10. 区域工业互联网市场成绩单,百度智能云开物第二