#include <stdio.h>
#include <stdlib.h>
typedef struct monkey
{
int num;/*猴子号码*/
struct monkey*next;
}ListNode,*Linklist;
/*=======================================主函数===============================*/
void main()
{
Linklist R;
int m,n,sn;
Linklist creat(int m,Linklist R);
Linklist XDW(int m,int n,Linklist R);
for(;;)
{
printf("请输入猴子总数m和数到n个猴子出队(n<m):\n");
scanf("%d%d",&m,&n);
if(m==1)
printf("只有你一只猴子,你就是猴子大王,恭喜恭喜!\n");
else if(n>=m||n==0)
printf("你的输入错误,请重新输入\n");
else
{
R=creat(m,R);
R=XDW(m,n,R);
}
printf("============================================\n");
printf("如果你想退出请输入0,如果要继续输入请输入1:\n");
scanf("%d",&sn);
if(sn==0)
break;
}
}
/*==============================建立单循环链表==============================*/
Linklist creat(int m,Linklist R)
{
ListNode *p,*q;
int i;
R=q=(ListNode*)malloc(sizeof(ListNode));
for(i=1;i<m;i++)
{
p=(ListNode*)malloc(sizeof(ListNode));
q->num=i;
q->next=p;
q=p;
}
p->num=m;
p->next=R;
R=p;
return R;
}
/*=============================选大王=====================================*/
Linklist XDW(int m,int n,Linklist R)
{
int i,j;
ListNode *p,*q;
p=R;
for(i=1;i<=m-1;i++)
{
for(j=1;j<=n-1;j++)
p=p->next;
q=p->next;
p->next=q->next;
free(q);
}
printf("最终结果大王是第%d号猴子\n",p->num);
printf("============================================\n");
R=p;
return R;
}

林当时
- 粉丝: 70
- 资源: 1万+
评论0