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