猴子选大王

M只猴子要选大王,选举办法如下:所有猴子按1,2……n编号围成一圈,从第一号开始顺序报数1,2……m,凡是报m号的退出圈外,如此循环报数直到圈内只剩一只猴子时这只猴子就是大王。

数据结构:

猴子链表,循环

猴子属性值:判断是否落选

利用单向循环链表模拟此过程,输出选出的大王编号。

程序的设计思想:

(1)问题分析:“猴子选大王”问题是约瑟夫环问题的一个特例。由于本题目的数据元素个数不可知,所以可使用链表来动态的分配内存空间。而该问题又是一个不断的循环问题所以用循环链表来实现。

(2)总体设计:首先生成一个空链表,并给n个结点分配空间,让单链表的表尾指针指向头结点则生成一个带有n个结点的循环单链表。再给每只猴子建立顺序的编号。

现从第一个结点开始报数,依次顺序查找出报数为m的待出列的结点(猴子)通过q->next=p->next删除该结点后继续运行否则让q成

为p的前驱指针。最后当p->next==p时停止运行,得到p所指向的结点即为猴子选出大王的编号。

C语言程序源代码:#include

#include

#define n 8

#define m 3

typedef struct monkey

{

int num;

struct monkey *next;

} Monkey;

int main()

{

Monkey *p,*head,*q;

int i;

head=p=q=malloc(sizeof(Monkey));//建立头指针

for(i=1;i

{

p=malloc(sizeof(Monkey));

q->next=p;

q=p;

}

q->next=head;  //建立循环链表

p=head;

printf("对猴子进行编号!\n");

for(i=1;i<=n;i++)

//给n只猴子分别建立顺序编号

{

p->num=i;

printf("%d号猴子:%d\n",p->num,p->num);

p=p->next;

}

i=0;   //初始化

p=head;

while(1)

{

i++;

printf("%d号猴子报:%d\n",p->num,i);

if(p->next==p)

break;  //判断还剩下最后一个结点时停止运行

if(i==m) //报道m的猴子淘汰

{

i=0;

printf("%d号猴被淘汰\n",p->num);

q->next=p->next;

p=q->next;

continue;

}

else

{

if(i==m-1) q=p;

p=p->next;

}

猴子选大王 java_猴子选大王相关推荐

  1. 猴子选大王 java_猴子选大王(java求解) | 学步园

    n只猴子选大王,方法如下:按照1,2,3....n给猴子编号,然后按编号顺序坐成1圈,从1号猴子开始按编号顺序报数至m,报到m的猴子退出圈外,退出的猴子的下一只猴子重新从1开始报数至m,报到m的猴子退 ...

  2. 数据结构猴子选大王java_数据结构例子-猴子选大王

    约瑟夫问题(猴子选大王):   n只猴子要选大王,选举办法如下:所有猴子按1,2,-,n编号围坐一圈,从第一号开始按1,2,-,m报数,凡报m号的推出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴 ...

  3. 猴子选大王 java_基于java数据结构链表写的猴子选大王

    [实例简介] 基于java数据结构链表写的猴子选大王,其实就是一个约瑟夫环问题,采用java数据结构链表写的.有点小问题.当输入一只猴子,报数为1时删除会出错.没有实现动态显示猴子的添加和删除. [实 ...

  4. react实现全选、取消全选和个别选择

    react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo e ...

  5. vue 带全选和多选的表格怎么写_vue中使用计算属性巧妙的实现多选框的“全选”...

    接下来我会以一个购物车的例子,来演示如果借助计算属性,精巧的实现多选框的全选功能.当然,有全选,自然对应的也还有取消全选. 以下这张gif图,就是最终的实现效果: 第一步,针对购物车每一个商品进行设置 ...

  6. html表单全选框,form表单里如何实现全选和全不选

    JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果. javascript实现全选和全不选效果: 1.首先你 ...

  7. jquery的全选,全不选,反选

    jquery的全选,全不选,反选: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind=&q ...

  8. 隔行换色案例||全选和全不选||QQ表情选择||多选下拉列表左右移动

    01.隔行换色.html <!DOCTYPE html> <html><head><meta charset="UTF-8">< ...

  9. 编程笔试(解析及代码实现):猴子吃桃。猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个…的C++、Java、Python、C#等语言代码实现

    编程笔试(解析及代码实现):猴子吃桃.猴子第一天吃了若干个桃子,当即吃了一半,还不解馋,又多吃了一个. 第二天早上又将剩下的桃子吃了一半,还是不过瘾,又多吃了一个.以后每天都吃前一天剩下的一半再加一个 ...

最新文章

  1. 1049. Counting Ones (30)
  2. TypeScript方法的定义
  3. 真实的linux系统是怎样的,只使用Linux系统是怎样一种体验?_科技数码通
  4. mendeley引用参考文献不显示_免费文献管理器Mendeley
  5. springmvc注解小示例(转)
  6. [html] 对于rtl网站的适配有哪些方案?
  7. mp3排序软件哪个好用_U盘加密软件_U盘防拷贝软件哪个好用?
  8. 【转】AndroidStudio升到最新版本(3.1.2)之后
  9. 初涉IPC,了解AIDL的工作原理及用法
  10. python中win32api_Python win32api.SetCursorPos方法代码示例
  11. 【两步稀疏表示法】基于两步稀疏表示法的小波变换的图像重建算法的MATLAB仿真
  12. 计算机飞行模式无法关闭,Win10开启飞行模式之后无法关闭退出怎么解决
  13. selenium自动化中停止页面加载
  14. ESP32 LVGL8.1 ——event 事件 (event 17)
  15. 网易pop3服务器没有响应,网易“封杀”QQ邮箱?POP3服务已关闭
  16. gmx grompp
  17. 在c语言中开辟一个数组空间,c语言如何在动态的结构体数组开辟新空间
  18. sybase客户端SqlDbx中文乱码问题解决
  19. CASS中基于高程点并生成等高线的方法
  20. 一起来玩U3D之基础物理引擎

热门文章

  1. PHPCMS V9系统配置文件和模板目录
  2. mysql 改成无密码登录_mysql修改密码
  3. OpenCV_Canny图像边缘检测
  4. html+页面的背景透明,css设置背景透明 元素不透明
  5. IT人的日韩俄语歌单:已然被二次元的“恋爱循环”洗脑
  6. 计算机boss是什么东西,Boss. 是什么意思?
  7. Three.js Line2渐变色线条序列帧动画
  8. 深入理解 Python 异步编程
  9. java数组删除元素_java删除数组中的某一个元素的方法
  10. 一篇文章带你了解自动化测试开发