# (C语言) 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的那位

## 有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后最后留下的是原来第几号的哪位。

int main(void) {

Queue * queue = NULL;
queue = init();

int i = 0;
for(i = 1;i<=99;i++)
{
push(queue,i);
}

//解题思路
i = 1;
while(queue->size != 1)
{
int data = pop(queue);
if(i++ % 3 != 0)
{
push(queue,data);
}
else
{
printf("killed id is:%d\n",data);
}
}

//所求的元素是：
printf("last person id is :%d\n",pop(queue));

return EXIT_SUCCESS;
}


#ifndef QUEUE_H_
#define QUEUE_H_

#define LEN 100

typedef struct Node
{
int data;
struct Node * next;
struct Node * prev;
}Node;

typedef struct Queue
{
int size;
Node * tail;
}Queue;

Queue * init();

void push(Queue * queue,int data);

int pop(Queue * queue);

void travel(Queue * quque);

#endif /* QUEUE_H_ */


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

Queue * init()
{
Queue * queue = (Queue*)malloc(sizeof(Queue));
if(queue == NULL)
{
perror("malloc error");
exit(-1);
}
memset(queue,0,sizeof(Queue));
queue->size = 0;
queue->tail = NULL;

return queue;
}

void push(Queue * queue,int data)
{
if(queue->size == LEN)
{
perror("over flow");
exit(-1);
}

Node * node = malloc(sizeof(Node));
if(node == NULL)
{
perror("malloc error");
exit(-1);
}
node->data = data;
node->next = 0;
node->prev = 0;

//-------------
if(queue->size == 0)
{
}
else
{
queue->tail->next = node;
node->prev = queue->tail;
}
queue->tail = node;

queue->size++;
}

int pop(Queue * queue)
{
if(queue->size == 0)
{
printf("empty!");
exit(-1);
}

int data = node->data;
free(node);

queue->size--;

return data;
}

void travel(Queue * queue)
{
printf("----------\n");
while(node)
{
printf("%d\t",node->data);
node = node->next;
}
printf("----------\n");
}


03-31 1771

01-08 1万+

05-19 186

12-24 235

01-25 3万+

11-01

03-15 3312

09-16 3703

07-30 1920

10-13 1614

10-22 2591

05-12 1696

12-11 4765

01-27 1万+

11-23 9852

04-18 559

08-29 1万+

05-25 1万+

11-20 1万+

04-14 59万+

03-13 15万+

03-04 14万+

03-08 2万+

04-25 6万+

03-10 13万+

03-10 18万+

03-12 11万+

03-13 11万+

03-18 1万+

03-19 8万+

03-19 3万+

03-22 4万+

03-23 4万+

03-24 3万+

03-25 3万+

05-08 5万+

03-25 9万+

03-29 21万+

03-29 10万+

03-30 16万+

05-31 6643

05-31 1万+

04-02 1万+

04-02 6034

04-02 4万+

04-06 1万+

04-06 7万+

04-09 8万+

04-09 3万+

05-17 8841

04-11 4万+

04-15 6万+

04-18 4万+

04-20 4万+

04-24 3万+

05-01 6579

05-03 1万+

05-16 5万+

05-06 1万+

05-07 3527

05-07 1万+

05-08 4万+

05-10 3469

05-14 6748

05-16 3749

05-16 1万+

05-17 5217

05-30 810

05-20 1127

05-18 2355

05-18 8629

05-27 1600

05-18 3771

05-28 1378

05-19 1万+

05-19 2019

05-21 8025

05-21 8091

#### 老码农吐血建议：2020年，低于1w的程序员要注意了...

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客