猴子选大王算法

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:45:40
有N只猴子围成一圈,每只各一个从1到N中的编号,打算从中选出一个大王;
经过协商,决定出选大王的规则:从第一个开始循环报数,数到M的猴子出圈,最后剩下来的就是大王。
要求:从键盘输入N、M,编程计算哪一个编号的猴子成为大
用顺序表和单链表分别实现
最好是把每一步是什么意思都写出来..小弟搞不来...我们那变态老师要我们上机的时候做完了要问我们为什么?还要写实验报告....搞好了加分.重重的加
麻烦大家把每一步是什么意思给我说一下....老师要提问的,谢谢 还有 就是报M的猴子出列后,还是从第一个开始报数...依次报

我改好了 ~~~~~

顺序表和单链表两种方法都写好了
注释写得很清楚 相信你能看懂 有问题问我
你先运行就知道了

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100

typedef struct Node
{
int data;//存储猴子编号
struct Node *next;
}*List;

/* 用链表来得出大王的序号 */
int LinkedList(int num_monkey,int number);

/* 用顺序表来得出大王的序号 */
int SequenceList(int num_monkey,int number);

/* 创建循环单链表 */
List CreateList(int n);

void main()
{
int m, n, way, king;
printf("请输入猴子个数:");
scanf("%d", &n);
printf("请输入要报的数:");
scanf("%d", &m);

while (1)
{
printf("\n请选择解决问题的方法:\n");
printf("1.单链表\n");
printf("2.顺序表\n");
scanf("%d", &way);

if (way == 1)
{
king = LinkedList(n,m);
break;
}
else if (way == 2