猴子选大王

本文介绍了一个利用循环链表实现的猴子选大王游戏程序。通过C语言编程,创建一个包含指定数量节点的循环链表,每个节点代表一只猴子。随后通过特定规则淘汰猴子直至选出大王。

/*
  Name:猴子选大王
  Author:wujilin
  Description:循环链表的运用
  Date: 15-07-06 21:53
  Copyright:
*/

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

typedef struct Node
{
 int data;
 struct Node *next;
}Node,*LinkList;

void CreatLinkList(LinkList *L,int m)// 创建循环链表 m为猴子总数
{
 Node *p, *q;
    int i;

 (*L) = (LinkList)malloc(sizeof(Node));
 if ((*L) == NULL)
 {
  printf("memory allocation failed,goodbye");
  exit(1);
 }
    p = (*L);
 p->data = 1;
 for (i = 2; i <= m; i++)
 {
  q = (LinkList)malloc(sizeof(Node));
        if (q == NULL)
  {
      printf("memory allocation failed,goodbye");
       exit(1);
  }
     q->data = i;
  p->next = q;
  p = q;
 }
 p->next =(*L);
}

void xuandawang(LinkList *L, int n, int m)
{
 Node *p, *q;
    int k;
 int j = 1;

 p = (*L);
   
 for (; m > 1; m--)
 {
  k = 1;
  while (k != n)
  {
   p = p->next;
      k++;
  }
     printf("第%d个出队列的是%d/n", j++, p->data);
  p->data = p->next->data;
  q = p->next;
  p->next = p->next->next;
        free(q);
 }
    printf("最终结果大王是第%d号猴子/n",p->data);
}

int main(void)
{
 int m, n;
    LinkList L;

 printf("请输入猴子总数和数到那个猴子出队:");
 scanf("%d%d",&m,&n);
    CreatLinkList(&L, m);
    xuandawang(&L, n, m);

 system("pause");
 return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值