Codigo 8 Reinas
#include
#include
#include
#include
#define FALSE 1
#define TRUE 0
typedef struct nodo{
char dato;
struct nodo *sig;
}_nodo;
_nodo *inicio;
//8FILE*archivo;//declaracion de un archivo
int CrearTablero(){
nodo *aux,*rec=inicio;
int i;
for(i=0;idato=0;
aux->sig=NULL;
}else
return(1);
if(inicio==NULL)
inicio=aux;
else{while(rec->sig!=NULL)
rec=rec->sig;
rec->sig=aux;
}
rec=inicio;
}
return(true);
}
int imprimeLista(void){
_nodo *r=inicio;
int i,j;
// archivo=fopen("solucion.txt","w");//fprintf(archivo,"\n SOLUCION ENCONTRADA\n\n");
for(i=0;idato);
printf("| %c |",r->dato);
r=r->sig;
}
//fprintf(archivo,"\n");
printf("\n");
}
//fclose(archivo);//fclsoe cierra elarchivo
return(true);
}
int verificaFila(int comienzo){
_nodo *rec=inicio;
int i,cont=0,esp_lib=0;
for(i=0;isig;
while(cont!=8){
if(rec->dato==0)
esp_lib++;rec=rec->sig;
cont++;
}
if(esp_lib==0){
return(false);
}else{
return(true);
}
}
int Rellena(int fila){
_nodo *r=inicio;
int posIni,pos;
int Lim_sup=8,Lim_inf=0;srand(time(NULL));
Lim_sup=Lim_sup*fila;
Lim_inf=Lim_sup-7;
/*-----comprueba si se puede insertar--------*/
//printf("\n fila %i , Limite inferior: %i Limite Superiror: %i \n",fila,Lim_inf, Lim_sup);
if(verificaFila(Lim_inf)==false){
//printf("\n no pudo insertar\n");
return(1);
}
do{
pos=((rand()%8)+Lim_inf);
//printf("\n posicion : %i\n",pos);
int i;
r=inicio;
for(i=0;isig;
//if(r->dato==85 || r->dato==45)
//printf("\n Reina amenazada!\n");
}while(r->dato!=0);
/*--------- Rellena desde laposicion hacia el abajo-----------*/
posIni=pos;
r=inicio;
while(posdato=45;
pos=pos+8;
}
/*----------Rellena desde la posicion hacia el abajo derecha ---------*/
pos=posIni;...
Regístrate para leer el documento completo.