Estructura de datos Programación en lenguaje C Pregunta de programación, ¿cómo programar esto?
#includelt; stdio.hgt;
#stdlib.hgt
lista de estructuras typedef
{
int datos;
estructura Lista *siguiente;
}lista
int principal()
{
lista *L = (lista*)calloc(1, sizeof(list)); //nodo principal
L-gt; next = NULL;
int n , k, i;
scanf("dd", amp; n, amp; k
lista *s, *q = L; for (i=0; ilt; n; i) //Asignar valor inicial
{
s = (list*)calloc(1, sizeof(list));< / p>
s-gt; datos = i 1;
s-gt; siguiente = NULL
q-gt; > q = s;
}
q-gt; next = L-gt next; //Deje que el nodo de cola apunte al siguiente del nodo principal, es decir. , se crea la primera posición personal, la lista enlazada circular unidireccional
q = L-gt; // Deje que q apunte al siguiente nodo principal
while (q -gt; next != q) //Salir del bucle cuando solo quede un elemento
{
for (i=1; ilt; k-1; i)
{q = q-gt; next;} //q apunta al nodo eliminado anterior
s = q-gt; //s apunta al nodo eliminado
p>q- gt; next = s-gt; next; //Vuelve a conectar la lista enlazada después de eliminar s
q = q-gt;next; //Deja que q apunte a la posición inicial. del siguiente ciclo
p>
//printf("d ", s-gt; data
free(s); s = NULL;
}
printf ("d\n", q-gt; datos
gratis
);q = NULL;
gratis(L);
L = NULL;
devolver
} p>