Red de conocimientos turísticos - Información de alquiler - Una pregunta sobre programación en C, necesito usar una lista enlazada, muchas gracias

Una pregunta sobre programación en C, necesito usar una lista enlazada, muchas gracias

¡Este es el problema del ciclo de José!

Utilicé una única lista circular enlazada: (prueba de VC 6.0 aprobada) #include?lt; stdio.hgt;

#include?lt;

#define?_SIZE?sizeof(Nodo)

typedef?struct?List

{

int?Number;

struct?List?*Next;

}Nodo,?*pNode;

int?iNode=0; //Número de nodos

pNode?CreatList ( pNode?head, ?int?iNum);

int?process (pNode?head, ?int?k

void?main(void)

< p); >{

pNode?head?=?NULL;

int?iNum?=?10;

int?k?=?0;

p>

//Crea una lista enlazada vacía con el nodo principal

head?=?(pNode)malloc(_SIZE);

head-gt; Número?=?10; //El nodo principal representa la última persona

head-gt; Next?=?head;

iNode;

printf( "Por favor?input?k: ");

scanf("d", amp;k);

head?=?CreatList(?head,?iNum?);

printf ("El?resultado?es?No.d\n", proceso(?head,?k?));

}

pNode? CreatList(pNode?head,? int?iNum)

{

int?ident?=?1;

pNode?add?=?NULL, ? temp?=?head;

//Crea una lista vinculada de las personas iNum-1 restantes, numerando del 1 al iNum-1 en secuencia

while?(?ident?lt; ?iNum?)

{

add?=?(pNode)malloc(_SIZE);

add-gt;Number?=?ident;

add-gt;Siguiente ?=?temp-gt;Siguiente;

temp-gt;Siguiente?=?add;

temp?=?add;

iNodo;

p>

}

retorno?cabeza;

}

int?proceso (pNode?head, ?int?k)

{

int?iCount?=?1;

//curr apunta al nodo que se va a eliminar , temp apunta al nodo anterior de curr

pNode? temp?=?head,?curr?=?head-gt;Next;

// Finaliza el ciclo cuando el número de nodos restantes es 1

while?(?iNode?!= ?1?)

{//Finalizar el ciclo cuando solo quede un nodo

> if?(iCount?==?k?)

{

iCount?=?1;

//Eliminar nodo

temp-gt; ¿Siguiente?=?curr-gt; Siguiente

iNode--;

iCount;

temp?=?temp-gt;Siguiente

}

curr?=?temp-gt;Siguiente; ;

}

return?curr-gt;Número;

}?

Resultados de la prueba