Alguém pode me ajudar a resolver este exercício? Estou começando a aprender e empaquei neste exercício do livro do sedgewick.
#include <stdio.h>
#include <stdlib.h>
typedef struct node* link;
struct node { int item; link next; };
int main()
{
int i, N, M;
link t = malloc(sizeof(*t)), x = t;
printf("Digite o numero de pessoas e M:");
scanf("%d %d", &N, &M);
t->item = 1;
t->next = t;
for (i = 2; i <= N; i++)
{
x = (x->next = malloc(sizeof(*x)));
x->item = i; x->next = t;
}
while (x != x->next)
{
for (i = 1; i < M; i++) x = x->next;
x->next = x->next->next; N--;
}
printf("%d\n", x->item);
return 0;
}
Quando a lista está sendo construida, cada link é estabelecido duas vezes porque a lista circular é mantida depois que cada nó é inserido. Modifique o programa para construir a lista circular sem este trabalho extra.