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; p>
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