关于50人数数问题。
50个人围成一团,从第一个人开始数数。数到5之后那个人出去,接着数,写出所有人得出列顺序、附加代码:
#include<iostream>
#include<iomanip>
using namespace std;
typedef struct LNode
{
int number;
struct LNode *next;
}LinkList;
int main()
{
int i,outp;
LinkList *head = (LinkList *)malloc(sizeof(LinkList));
LinkList *p = head;
head->number = 1;
//第一个人编号为1 head->next = head;
for (i = 2; i <= 50; i++)
{
//编号,创建循环单链表
LinkList *q = (LinkList *)malloc(sizeof(LinkList));
q->number = i; p->next = q; p = q; if (i == 50)
{
q->next = head;
}
}
p = head; i = 1; outp = 0;
//计出圈人数
while (outp != 50)
{
p = p->next;
i++;
if (i == 4)
{
cout<<p->next->number<<setw(4); //跳出一个人
p->next = p->next->next;
p = p->next;
i = 1;
outp++;
}
}
system("pause");
return 0;
}