题目

本题是谭浩强《C程序设计课后习题》题9.6。
题目:
13个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。找出最后
留在圈子中的人原来的序号。要求用链表实现。


以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj

一、解题思路

思路:
创建一个环形链表,给链表中的每一个节点从1~13编号,然后开始淘汰过程,对于淘汰的节点,序号置为0,淘汰完成之后,找到序号不为0的即为最后留下的。

二、代码部分

1.引入库

代码如下(示例):

#include<stdio.h>

2.主函数部分

代码如下(示例):

#define NUM 13
//定义节点
typedef struct people
{int num;struct people* next;
}people;
int main()
{people arr[NUM];//定义包含13个人的数据//建立环状链表people* head = arr;for (int i = 0; i < NUM; i++){head->num = i + 1;head->next = &arr[i + 1];head = head->next;}//构成环状结构arr[NUM - 1].next = arr;//开始报数int count = NUM;//从1开始报数int i = 1;head = arr;while (count > 1){if (head->num == 0)//判断是否已退出{head = head->next;//跳过此人continue;}if (i == 3){printf("第%d个人退出\n", head->num);head->num = 0;count--;}head = head->next;i++;//继续报号if (i > 3)i = 1;//判断报号是否大于3}while (head->num == 0)//找出编号不为0的人{head = head->next;if (head->num != 0){printf("没有退出的人为:%d\n", head->num);break;}}return 0;
}

三、执行结果

输出:

第3个人退出
第6个人退出
第9个人退出
第12个人退出
第2个人退出
第7个人退出
第11个人退出
第4个人退出
第10个人退出
第5个人退出
第1个人退出
第8个人退出
没有退出的人为:13

题9.6:13个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。找出最后 留在圈子中的人原来的序号。要求用链表实现。相关推荐

  1. 海大910-2014年编程题1:13个人围成一圈, 从第1个人开始顺序报号1, 2, 3。凡报到3者退出圈子。找出最后 留在圈子中的人原来的序号。要求用链表实现。(15分)

    题目 本题是2014年中国海洋大学研究生入学考试910高级程序设计程序设计题第1题. 题目: 13个人围成一圈, 从第1个人开始顺序报号1, 2, 3.凡报到3者退出圈子.找出最后 留在圈子中的人原来 ...

  2. (链表解决)13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子,找出最后留在圈子里的人的序号。

    题目 13个人围成一圈,从第一个人开始顺序报号1,2,3,凡报到3的人,退出圈子.找出最后留在圈子里的人的序号. 代码 #include <stdio.h> #define n 13 ty ...

  3. 13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。

    13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子.找出最后留在圈子中的人原来的序号.要求用链表实现. #include <stdio.h> #include < ...

  4. c语言】13个人围成一圈,从第1个人开始顺序报号1,2,3.凡报到3者退出圈子。找出最后留在圈子中的人原来的序号

    题目(摘自谭浩强的C语言):有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那个人. 解法思路:首先不要将思维局限在一圈人,可以先将n个 ...

  5. 有n个人,顺序排列, 并首尾相连围成一圈。从第一个人开始报数(从1到4),凡报到4的人退出圈子+扩展版本

    https://blog.csdn.net/qq_44037213/article/details/106551760?fps=1&locationNum=2 有n个人(n<=1000) ...

  6. 13个人围成一圈,从第1个人开始顺序报号1、2、3,凡报到3的人退出圈子。找出最后留在圈子里的人原来的序号。

    [绕圈报数] 1130 更新 ======== 一般化情况 13个人围成一圈,从第1个人开始顺序报号1.2.3,凡报到3的人退出圈子.找出最后留在圈子里的人原来的序号. 输出提示 "出圈成员 ...

  7. 13个人围成一圈,从第1个人开始顺序报号1,2,3。 凡报到3者退出圈子

    #include <stdio.h> #include <stdlib.h> #define N 13 /* 13个人围成一圈,从第1个人开始顺序报号1,2,3. 凡报到3者退 ...

  8. 7-5 模拟报数游戏(约瑟夫环问题):有n个人围成一圈从1开始按顺序编号从第一个人开始从1到k报数,报到k的人退出圈子;然后圈子缩小,下一个人继续,问最后留下的是第几号(只留1 人)。要求定义函数

    学习记录与分享 PTA程序设计类教学平台-Python作业二(循环结构程序设计) 题目 7-5 模拟报数游戏(约瑟夫环问题) 有n个人围成一圈,从1开始按顺序编号,从第一个人开始从1到k报数,报到k的 ...

  9. C语言 n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,计算最后留下的是最初第几号人

    #include <stdio.h> int main(){int i,k,m,n,num[50],*p;printf("几个人围成一圈?");scanf(" ...

  10. 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?

    有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? 花了半个下午搞出来的代码,调试了一会,一切正常,感觉还不错! '''解题思路: ...

最新文章

  1. 区块链隐私:交易还是计算?
  2. Altium designer中元器件重新编号,会残留之前的编号,浅色有括号——消除办法
  3. XML学习笔记01【xml_基础、xml_约束】
  4. VDP文件级恢复需要在用VDP备份的机器上浏览
  5. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
  6. Swift封装 滑出式导航栏
  7. ios测试续航软件,5款iPhone测试iOS电池续航:结果这样 你还升级吗
  8. asp 退出登录修改cookie能进入后台_某logCMS的代码审计:越权到后台getshell
  9. 传统语音识别GMM和HMM
  10. 用java编写一个学生类
  11. PLC对接MES、PLC数据上报、PLC之间通讯
  12. [BZOJ4816][SDOI2017]数字表格(反演)
  13. Factorization Machines 论文翻译
  14. 解决RabbitMQ无法使用guest用户登录问题
  15. 谁知道qq会员怎么退款呢
  16. 基于CEP的量化交易平台建设
  17. 教程:客制化您的输入法
  18. 功能测试报告怎么写?进来看标准模板
  19. 几个简单的shell编程题
  20. 苹果语音备忘录怎么改名字_苹果手机语音备忘录怎么恢复?教你在手机上直接操作...

热门文章

  1. 企业网站建设流程是什么?三个流程要知道
  2. 【论文研读】基于对偶种群的约束多目标优化进化算法
  3. 很强大的上网行为管理终端软件-云子可信-一键禁止访问视频网站
  4. 苹果蒸发639亿 华尔街陷入苹果需求全恐慌模式
  5. 生物信息学分析 | 物种间的同源基因的批量注释
  6. 关闭 mysql redo_MySQL redo log总结
  7. 指纹识别_Android指纹认证教程
  8. 非root用户用bluefish保存文件时报permission denied错误解决办法(之一)
  9. eclipse启动报错,显示找不到指定路径的JRE
  10. 2018 抖音热门歌曲大全