/*
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 6 9 12 15 4 8 13 2 10 1 11 7 14 5
Press any key to continue
*/
#include
#include
typedef struct node {
unsigned number;
struct node *next;
} *NODE;
typedef struct list {
NODE head;
unsigned length;
} *Loop;
Loop InitList(void) {
Loop JosephLoop = (Loop)malloc(sizeof(list));
JosephLoop->head = (NODE)malloc(sizeof(node));
JosephLoop->head->number = 0;
JosephLoop->length = 0;
return JosephLoop;
}
void CreateList(Loop JosephLoop,unsigned n) {
unsigned i;
NODE p = JosephLoop->head;
JosephLoop->length = n;
for(i = 1; i <= n; ++i) {
p->next = (NODE)malloc(sizeof(node));
p->next->number = i;
p = p->next;
}
p->next = JosephLoop->head;
}
void Show(Loop JosephLoop) {
NODE p = JosephLoop->head->next;
while(p != JosephLoop->head) {
printf("%2u ",p->number);
p = p->next;
}
printf("\n");
}
void NumberOff(Loop JosephLoop) {
unsigned count = 0;
NODE q,p = JosephLoop->head;
while(JosephLoop->length > 1) {
if(p->next == JosephLoop->head) p = p->next;
++count;
if(count % 3 == 0) {
printf("%2u ",p->next->number);
q = p->next;
p->next = q->next;
free (q);
--JosephLoop->length;
count = 0;
}
else p = p->next;
}
printf("%2u ",JosephLoop->head->next->number);
// printf("%2u ",JosephLoop->head->next->next->number);
printf("\n");
}
int main() {
Loop JosephLoop = InitList();
CreateList(JosephLoop,15);
Show(JosephLoop);
NumberOff(JosephLoop);
return 0;
}
定义一个链表类
手动输入人员个数 循环遍历建立链表
把最后一个data里的指针 指向头结点
然后开始while 循环 直到next->data = NULL
就可以了
int count;
stuct stutent
{
// int data;
bool flag; //被推出 则为1,否则为0
}stu[N]; //N为宏定义量
while(count
for(i=1;i
while(!stu[i].flag) //跳过哪些已经被推出的家伙
{
i++;
}
//下面是推出一个人——每次循环都推出一个人
stu[i].flag=1;
count++;
if(count=N-1) //只剩下1个人
prinft(" ");
}
}
#include
#define N 10
int main()
{
int a[N];
int i,c,d;
for(i=0;ia[i]=1;
d=0;
for(i=1;i{
for(c=0;c<3;c++)
{
while(a[d%N]==0) d++;
d++;
}
d--;
a[d%N]=0;
printf("%d ",d%N);
}
printf("%d",d%N);
}
#include "stdio.h"
void main()
{
int n;
printf("请为 N 输入一个数字\n");
scanf( "%d" , &n );
for( int i = 1; i <= n; i++ )
{
if( ( i % 3 ) != 0 )
printf( "%d " , i );
}
}