1. 有n个人围成一圈,从第1个人开始,1、2、3报数,报至3出局,余下的人继续从1、2、3报数,问:最后剩下的一人是原来的第几号?同时求出被淘汰编号的序列。(要求:用循环队列解决该问题。)

这是一道数据结构对与循环队列的应用,首先要了解什么是队列,队列和栈的区别。队列的进出方法。队列是要求从尾进头出,当然这是一种俗的说法,各自有各自的方法,任务是要做出题来,也有很多好的方法可用!!

我用的方法是链队,对于链队来说比起顺序队不用担心数组的溢出,当然对于这一题来说删除数据更方便!首先先将每个人编号,然后将队列首尾相接,就像一个环形一样的链,然后用循环来将数到3的人的编号输出,剩余最后一个在输出就行啦。在写的过程中也会碰到很多的问题,代码如下:

yuesehan.cpp:
#include <iostream>
#include <stdio.h>
#include "han.h"
#include "Status.h"
using namespace std;

int main()
{
LinkQueue Q;
InitQueue(Q);
int i,n;
ElemType e = 0;
cout<<"输入共有多少人参加"<<endl;
cin>>n;
for(i = 1;i<=n;i++)
{
EnQueue(Q,i);
}
Main(Q,n,e);
return 0;
}


han.h:
#include <iostream>
#include <stdlib.h>
#include "Status.h"
using namespace std;

typedef struct QNode
{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct 
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;

Status InitQueue(LinkQueue &Q)
{
Q.front = Q.rear=new QNode;

if(!Q.front)
{
exit(OVERFLOW);
}
Q.front->next = NULL;
return OK;
}

Status EnQueue(LinkQueue &Q,ElemType e)
{
QueuePtr p;
p = new QNode;
if(!p)
exit(OVERFLOW);
p -> data = e;
p -> next = NULL;
Q.rear->next = p;
Q.rear = p;
return OK;
}

Status DeQueue(LinkQueue &Q,ElemType &e)
{
QueuePtr p;
p = new QNode;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear == p)
{
Q.rear = Q.front;
}
delete p;
return OK;
}

void Main(LinkQueue &Q,int n,int e)
{
Q.front = Q.front->next;
Q.rear->next = Q.front;
int j;
bool flag = false;
cout<<"淘汰编号的序列"<<endl;
while(n != 1)
{
j = 1;
if(flag == false)
{
for(j = 1;j<2;j++)
{
Q.front = Q.front->next;
flag = true;
}
}
else
{
for(j = 1;j<3;j++)
{
Q.front = Q.front->next;
}
}
DeQueue(Q,e);
cout<<e<<" ";
n--;
}
cout<<endl;
cout<<"最后剩下的一人是原来的第"<<Q.front->data<<"号"<<endl;
}


Status.h:
 
#define TRUE 1
#define FALSE 0l
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 100
typedef int ElemType;
typedef int Status;

输出结果:

输入共有多少人参加
10
淘汰编号的序列
3 6 9 2 7 1 8 5 10 
最后剩下的一人是原来的第4号

有n个人围成一圈,从第1个人开始,1、2、3报数,报至3出局,余下的人继续从1、2、3报数,问:最后剩下的一人是原来的第几号?同时求出被淘汰编号的序列。(要求:用循环队列解决该问题。)相关推荐

  1. C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题

    1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈:下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序. 考虑问题: 报到T的人出圈,怎么表示出 ...

  2. c语言报数问题程序,转圈报数问题(C语言):有n个人围成一圈,顺序排号……...

    问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...

  3. 围圈报数c语言编程,C语言编程:有n个人围成一圈,顺序排号。从第一个人开始报数......

    题目:有N个人,从1到N编号,按照编号顺序围成一圈.从第一个人开始报数(从1报到3),凡报到3的人退出圈子. 问:最后留下的人的编号是几号. ============================= ...

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

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

  5. 转圈报数问题(C语言):有n个人围成一圈,顺序排号……

    问题描述: 有n个人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号那位. 题目分析: 这道题目是我们在日常生活中也能经常见到的一种报数小游戏.首 ...

  6. ACMNO.38 C语言-报数 有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号. 从第1个人开始报数(从1到3报数),凡报到3的人退出圈子.`在这里插入代码片` 问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样 ...

  7. python n个人围成一圈,Python练习代码实例69-有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的...

    Python 练习实例69 题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位. 程序分析:无. 程序源代码:#!/usr/bi ...

  8. (C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。

    题目描述 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. 输入 初始人数n 输出 最后一人的初始编号 样例输入 3 样例输出 2 ...

  9. 有N个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

    万能方法. #include<stdio.h>//输入输出头文件 #include<stdlib.h>//建立动态内存分配所需要的头文件,malloc()函数需要用到int m ...

最新文章

  1. Java的字符串常量池
  2. Android-源码解析HandlerLooper
  3. 埋点是什么意思_掌握数据生命周期:初识数据埋点
  4. 字符串数组的排序c++_Java——数组相关知识点及练习演绎
  5. 重装操作系统时遇到的一些问题的解决方法总结
  6. 在Spring IoC中,依赖注入和依赖查找的数据来源区别
  7. github上写简历
  8. Mac UserWarning: findfont: Font family ['SimHei'] not found
  9. MATLAB-基本简介
  10. 渝粤题库 陕西师范大学 《教育科学研究方法》作业
  11. AndroidX适配教程
  12. websocket错误码盘点
  13. Python:使用cv2模块快速生成素描
  14. 【Leetcode】469. Convex Polygon
  15. iPad air2 充不进去电
  16. python怎么加字幕_python3实战之字幕vtt与字母srt的相互转换
  17. 元宇宙产业委共治大会专题——樊晓娟律师:元宇宙中的隐私保护迫在眉睫
  18. Graphql Instrumentation
  19. loadrunner 录制脚本出现乱码解决方法
  20. linux系统的层次结构,Linux 文件系统层次结构

热门文章

  1. b站网页版没有html播放,网页b站能小窗口播放吗?怎么播放?最新版本bilibili小窗口播放器...
  2. Django模型中的关系:一对一、一对多与多对多
  3. RK3399 Android7.1在uboot中设置GPIO的电平无效
  4. windows下,对opencv进行gcc/g++编译
  5. 深入浅出极大似然估计
  6. 树结构(Java实现)
  7. 使用arduino mega2560制作一台超简易的假机械臂!
  8. 【自建题库】c认证初级
  9. 黑马程序员---网络编程
  10. 看过无数总结,经历无数实践,这才是顶级IT公司的架构设计