对于本题 我感觉还是链表做起来舒服
数组也可以做 但是数组需要去控制循环 不太好控制 我之前搞了 最后看别人的实现
但是链表搞了一次就搞好了 香的嘞~
下面是代码
用单链表实现循环 再去删除要删除的人
5个人 数到2 你们在纸上画图 我就不画了 对于数组实现你们可以去牛客等上面去看看 我就不给了
#include <stdio.h>
#include<stdlib.h>
typedef struct node {
int x;
struct node* next;
}node;
node* buy(int i)
{
node* tmp = (node*)malloc(sizeof(node));
tmp->x = i;
tmp->next = NULL;
return tmp;
}
int main() {
int n = 0, m = 0;
node* tmp = NULL, * str = NULL;
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i++)
{
if (tmp == NULL)
{
tmp = buy(i);
str = tmp;
}
else
{
str->next = buy(i);
str = str->next;
}
}
str->next = tmp;
if (m == 1)
{
return str->x;
}
while (tmp->next != tmp)
{
for (int i = 1; i < m - 1; i++)
{
tmp = tmp->next;
}
tmp->next = tmp->next->next;
tmp = tmp->next;
}
return tmp->x;
}
香的嘞~