#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct Monkey)
struct Monkey
{
int age;
Monkey *next;
};
int age0[20];
Monkey *Create(int n)//建立循环链表
{
Monkey *h,*p;
int i;
h = new Monkey;
p=h;
for(i=1;i<=n;i++)
{
printf("请输入第%d号猴子的年龄:",i);
scanf("%d",&age0[i]);
p->age=age0[i];
if(i<n)
{
p->next=new Monkey;
p=p->next;
}
}
p->next=h;
return h;
}
void Out(Monkey *h,int i,int d,int num)//猴子出圈
{
Monkey *p,*q;
int k,i1,i2;
p=h;
for(q=h;q->next!=h;q=q->next);
for(k=1;k<i;k++)
{
q=p;
p=p->next;
}
while(p!=p->next)
{
for(k=1;k<d;k++)
{
q=p;
p=p->next;
}
// printf("出圈的猴子年龄为:%d\n",p->age);
q->next=p->next;
delete p;
p=NULL;
p=q->next;
}
for(i1=1;i1<=num;i1++)
{
if(p->age==age0[i1])
{
i2=i1;
}
}
printf("猴王为编号为%d年龄为%d的猴子\n",i2,p->age);
delete p;
p=NULL;
}
int main()
{
Monkey *head;
int num,year,beg=1;
int i,temp;
printf("请输入总的猴子数:");
scanf("%d",&num);
head=Create(num);
// ShowList(head);
temp=age0[1];
for(i=1;i<=num;i++)
{
if(temp>age0[i])
{
temp=age0[i];
}
}
for(i=1;i<=num;i++)
{
if(temp==age0[i])
{
beg=i;
}
}
printf("最年幼的猴子位于第%d号\n",beg);
printf("新年公元号为:");
scanf("%d",&year);
Out(head,beg,year,num);
}
流程图:
运行结果:
就酱~哪里不懂可以留言问~