设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,给出这n个人的顺序表p。

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>

typedef struct node
{
int data;
struct node* next;
}LNode;

LNode* Create(int n, int k) //创建循环链表
{
int start=k-1;
if(start==0) start = n;
LNode *s, *p, *L=NULL, *t;

while(n!=0)
{
s = (LNode*)malloc(sizeof(LNode));
if(L==NULL) p=s;
if(n==start) t=s;
s->data = n;
s->next = L;
L=s;
n--;
}
p->next = L;
return t;
}

LNode* GetNode(LNode *p)
{
LNode *q;
for(q=p;q->next!=p;q=q->next);
q->next = p->next;
free (p);
return (q);
}

int Print(LNode *p, int m)
{
int i;
printf("出队编号:\n");
while(p->next!=p)
{
for(i=1;i<=m;i++)
{
p=p->next;
}
printf("%3d",p->data);
p = GetNode(p);
}
printf("%3d\n", p->data);
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
LNode *p;
int n,k,m;

do
{
printf("输入总人数:");
scanf("%d",&n);
}while(n<0);

do
{
printf("输入开始人的序号1~%d:",n);
scanf("%d",&k);
}while(k<=0||k>n);

do
{
printf("输入间隔数字:");
scanf("%d",&m);
}while(m<=0);

p=Create(n,k);
Print(p,m);

return 0;
}

面试题 设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数, 报数到第m个人, 此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现相关推荐

  1. 有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他下一个人重新开始1到m的报数,如此下去直到全部都出圈为止。现要求按出圈次序.给出n人的顺序表

    设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止.现要求按出圈次序,每1 ...

  2. 设有n个人围坐一圈并按顺时针方向从1到n编号

    题目:设n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止.现要求按出圈次序, ...

  3. C++作业:n只猴子围成一圈,顺时针方向从1到n编号

    /* 邵发, 1309班, */ /* 作业07, 练习2 n只猴子围成一圈,顺时针方向从1到n编号.之后从1号开始顺时针方向让猴子从1到m依次报数, 凡报到m的出圈,取消资格.下一位再从1开始依次报 ...

  4. 实验题目:约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一个人

    实验题目:约瑟夫环问题:设编号为1,2,3,--,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数.从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,再从他的下一 ...

  5. n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,……依次类推, 直到所有的人都出圈,请输出依次出圈人的编号.

    88,n个人围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数, 数到m的人再出圈,--依次类推, 直到所有的人都出圈,请输出依次出圈人的编号. 输入 n m 输出 出圈的编号 ...

  6. 题目98-4:n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

    题目转载:http://python.wzms.com/s/1/103 题目描述: n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再 ...

  7. 约瑟夫环问题有10(100人或者n个)个人围成一圈,从第一个人开始报数(报1、2、3),只要报3的人就出去, 然后不停的循环报数,直到最后剩下一个人,计算出这个人最开始的位置。

    有10(100人或者n个)个人围成一圈,从第一个人开始报数(报1.2.3),只要报3的人就出去, 然后不停的循环报数,直到最后剩下一个人,计算出这个人最开始的位置.其实就是约瑟夫环问题 新手小白,多多 ...

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

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

  9. 题目:``N个人排成一圈,从第一个人开始报数,从1开始报,报到M的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。对于给定的N,M,求出所有人的出圈顺序

    题目:``N个人排成一圈,从第一个人开始报数,从1开始报,报到M的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止.对于给定的N,M,求出所有人的出圈顺序 public class ArrHa ...

最新文章

  1. [转]Android敏捷开发指南
  2. 鱼佬:百行代码入手数据挖掘赛!
  3. (转)动态SQL和PL/SQL的EXECUTE IMMEDIATE选项
  4. struts2 实现多文件限制上传
  5. java纯粹面向对象_Java的面向对象特征
  6. Xcode 不用签名编译程序
  7. deepin如何布署python_【玩转deepin】简单三步,教你在deepin15.11上安装Python3.7.4
  8. 多看 android6,多看阅读本地版
  9. java 绘制sin函数图像_MATLAB基础学习之三维曲线的绘制
  10. [原创]python MySQLdb在windows环境下的安装、出错问题以及解决办法
  11. 一步一步写算法(之合并排序)
  12. 全面剖析Ajax的XMLHttpRequest对象(学习Ajax必须知道的东西)
  13. 修改html本地样式,html-如何通过Javascript更改CSS类样式?
  14. 对比几个空地址“订阅”的结果
  15. 微信支付v2开发(6) 发货通知
  16. wsdl 架构验证警告:来自命名空间_Let it go: DARTS 神经网络可微架构搜索 笔记
  17. C++静态代码分析工具横向对比
  18. matlab激光扩束总结,zemax笔记14——激光扩束系统的设计
  19. 软件测试工程师笔试题带答案(一)
  20. 工程师实战分享:77条STM32知识汇总

热门文章

  1. PHP,mysql会话列表获取聊天记录最后一条以及未读消息条数
  2. 初中计算机入门教学计划,初中计算机教学计划范例
  3. 计算机及应用考试重点,计算机工程应用考试重点
  4. 软件工程中的结构化分析方法
  5. Python123测验4: 程序的控制结构 (第4周)
  6. PyTorch学习笔记(13)——强力的可视化工具visdom
  7. 服务器硬盘7200转和15000,机械硬盘是不是转速参数越高就越好?看完本文你就不这么觉得了...
  8. Android快递单号查询快递状态信息
  9. bits不能在本地计算机启动,Win10 BITS服务无法启动的解决方法
  10. 火狐强制刷新_强制Firefox 3在Windows XP中使用Vista默认主题