la lista debe ordenar los lobos así:
si le corresponde jugar al lobo 3 la lista a mostrar en pantalla es 3 4 1 2
pero si le corresponde al lobo 1 será 1 2 3 4
por cierto esto es para mi videojuego de atrapame si puedes!
recuerda que puedes ver el videojuego funcionando en
- Código: Seleccionar todo
- #include <iostream.h>
 #include <stdlib.h>
 // Declaración de la estructura NODO
 struct NODO{
 int dato;
 NODO *siguiente;
 };
 NODO *cab; // Se declara una estructura global, NO ES OBLIGATORIO HACERLO
 // Prototipos de las funciones usadas en el programa
 int posicion_lista(int n); // Valida si ya existe y ubica la posición para insertar
 void insertar(NODO *p, NODO *q, int n); // Inserta en la posicion adecuada
 void mostrar_lista(); // Muestra todo el contenido
 // Funciones usadas en el programa
 int main(){
 cab=NULL;
 int n;
 //system("CLS");
 cout<<"Ingrese un nodo (999 para salir):\n";
 cin>>n;
 while(n!=999){
 if(posicion_lista(n) == -1){ /* valida si ya existe */
 cout<<" Repetido.\n";
 }
 cout<<"Ingrese un nodo (999 para salir):\n";
 cin>>n;
 }
 mostrar_lista();
 }
 int posicion_lista(int n){
 NODO *p, *q;
 int encontro=0;
 p=NULL;
 q=cab;
 // Con el siguiente while recorremos la lista de principio a fin
 // y al final *p apunta al último nodo de la lista
 while(q != NULL && !encontro){
 if(n > q->dato){
 p=q;
 q=q->siguiente;
 }
 else{
 encontro=1;
 }
 }
 if(encontro){
 if(n == q->dato){
 return -1; // retorna -1 cuando el elemento está repetido
 }
 else{
 insertar(p,q,n);
 }
 }
 else{
 insertar (p,q,n);
 }
 return 0; // En caso de hacerse la inserci¢n correctamente retorna 0
 }
 void insertar(NODO *p, NODO *q, int n){
 NODO *nuevo;
 nuevo=new NODO;
 nuevo->dato=n;
 nuevo->siguiente=q;
 if(p != NULL){ // Quiere decir que hay uno o más nodos ya insertados
 p->siguiente=nuevo; // Al último nodo de la lista se le encadena el nodo nuevo
 }
 else{
 cab=nuevo;
 }
 }
 void mostrar_lista(){
 NODO *p=cab;
 cout<<"\nEl contenido de la lista es:\n";
 while(p!=NULL){
 cout<<p->dato<<endl;
 p=p->siguiente;
 }
 
 }


