Preprogramado
Principalmente:
1. A la función salida() le faltan llaves.
2. Algunos lugares donde se deben pasar direcciones se pasan en lugar de valores.
3. Hay una variable indefinida en la función ocho(): open_link_point, así que primero la cambié a open_point.
El siguiente es el código modificado, donde lo marqué con /////////.
#incluye & ltstdio.h & gt
#incluye & ltmath.h & gt
#incluye & ltstdlib.h & gt
#Definir max_layer 5 /*? ? ¿Por qué? ¿Por qué? */
#Definición verdadera 1
#Definición falla 0
#Definición nula 0
Vínculo estructural
{
int data[3][3];/*¿Sí? ¿Por qué? */
int capa; /* ¿"Sí"? */
enlace de estructura * siguiente
Enlace estructural * a priori;
};
enlace de estructura * cerca _ head/* ¿cierre? */
estructura enlace * open _ head/*¿Abrir? */
/****************************************** ************/
/* salida() */
/* ¿Qianhun? ¿Por qué? ¿Por qué? ¿P巜妦? */
/****************************************** ***********/
salida nula (enlace de estructura *p)
{
int i, j; p>
p>
And (p!=null)
{ for(I = 0;I<3;I++) /*¿Qué? Lo siento*/
{
for(j = 0; j & lt3;J++) /*? Lo siento*/
printf("%d ", p-& gt; data[I][j]); Lo siento, lo siento.
*/
printf (" \ n "); /*?¿Qué? ¿Qué ocurre? */
p-;
}
}//////////////////////1
/*Comparar*/
/* ¿Qianhun? ¿Qué pasó? ¿Cuál fue la operación? ¿Cuáles son las opciones? ¿Por qué? ¿Destino? ¿Qué? ¿Por qué? */
int compare(enlace de estructura *q, int dest[3][3])
{
int i, j, count = 0;
for(I = 0;I<3;I++) /*¿Qué? */
{
for(j = 0; j & lt3;J++) /*¿Qué? */
{
If (q->;Data[i][j]==dest[i][j])/*? Lo siento, lo siento*/
count++;/*?Sí*/
Else /*梫桳桙炩梸ঽ梙*/
{ p >
/*¿Qué pasó con el fallo? ¿Por qué? */
j = 3; /*? */
I = 3; /*?¿Cuál es el significado? */
Devuelve 0;
}
}
}
Si(count==9) // es*/
devuelve 1; /*es verdadero*/
}
/* ocho()*/
/ * ¿Lianhun? ¿Qué? ¿Por qué? ¿De qué estás hablando? ¿Qué es esto? ¿Por qué? ¿Por qué? */
int ocho(struct link *open_head, int dest[3][3])
{
int i, j, zero_x, zero _ y;/*0?? ¿Cuál es el punto? ¿Por qué? */
Enlace de estructura* new_point/*?¿Para qué sirve este edificio? */
estructura enlace * open _ point = open _ head /*¿Abrir? 1*/ ////////////2
enlace de estructura * cerrar _ punto
mientras(open_point!= NULL)/////// ////////////////3 open_link_point
{
Punto cercano = punto abierto;
open _point->prior->next = NULL
open _point-
if(compare(close_point,dest)==1
{
printf("Encontrar solución");
Salida (close_point);
Devolución 1;
}
Otro
{
if(close_point->layer>max_layer)
{
close_point->siguiente = open_point////// ///////4
close_point++;
}
Otro
{
for( I = 0;i<3;i++)/*? */
{
for(j = 0; j & lt3;j++)
{ p>
if(close _ point-& gt; data[i][j]==0) /*data o de
st*/
{
cero _ x = I; /*¿Oye? */
cero _ y = j; /*? */
j = 3; /*?¿Qué? */
I = 3; /* ¿Qué? */
}
}
}
if((zero_x-1)>=0)/* No */
{/* Ĉ?¿Qué? */
new_point=(enlace de estructura*)malloc(sizeof(enlace de estructura));
for(I = 0;i<3;i++)/*? ¿Por qué? ¿Por qué? */
{
for(j = 0;j <3;j++)
Nuevo punto de vista->data[I][j]= close_point->data[I][j];
}
Nuevo punto->data[zero_x][zero_y]= new_point->data[zero_x-1 ][zero_y];
Nuevo punto->datos[zero_x-1][zero_y]= 0;
Nuevo punto->datos[zero_x-1][zero_y] = 0;
p>abrir _ punto-> siguiente = nuevo _ punto/////////////////5
abrir _ punto++;
}
if((zero _ x+1)<3)/* */
{/* Ĉ?¿Qué? */
new_point=(enlace de estructura*)malloc(sizeof(enlace de estructura));
for(I = 0;i<3;i++)/*? ¿Por qué? ¿Por qué? */
{
for(j = 0;j <3;j++)
Nuevo punto de vista->data[I][j]= close_point->data[I][j];
}
Nuevo punto->data[zero_x][zero_y]= new_point->data[zero_x+1 ][zero_y];
Nuevo punto->datos[zero_x+1][zero_y]= 0;
Nuevo punto->datos[zero_x+1][zero_y] = 0;
p>abrir _ punto-> siguiente = nuevo _ punto////////////////6
abrir _ punto++ ;
}
if((zero_y-1)>=0)/*0 */
{/* Ĉ?¿Qué? */
new_point=(enlace de estructura*)malloc(sizeof(enlace de estructura));
for(I = 0;i<3;i++)/*? ¿Por qué? ¿Por qué? */
{
for(j = 0;j <3;j++)
Nuevo punto de vista->data[I][j]= close_point->data[I][j];
}
Nuevo punto->data[zero_x][zero_y]= new_point->data[zero_x][ zero_y-1];
Nuevo punto->datos[zero_x][zero_y-1]= 0;
Nuevo punto->datos[zero_x][zero_y-1] = 0;
p>abrir _ punto-> siguiente = nuevo _ punto//////////////////////// 7 p>
abrir_punto++;
<p>}
if((cero _ y+1)<3)/*0 */
{/* Ĉ?¿Qué? */
new_point=(enlace de estructura*)malloc(sizeof(enlace de estructura));
for(I = 0;i<3;i++)/*? ¿Por qué? ¿Por qué? */
{
for(j = 0;j <3;j++)
Nuevo punto de vista->data[I][j]= close_point->data[I][j];
}
Nuevo punto->data[zero_x][zero_y]= new_point->data[zero_x][ zero_y+1];
Nuevo punto->datos[zero_x][zero_y+1]= 0;
Nuevo punto->datos[zero_x][zero_y+1] = 0;
p>abrir _ punto-> siguiente = nuevo _ punto/////////////////////////8
abrir _ punto++;
}
}
}
}
si (open_point=NULL) p>
printf("Sin solución");
}
/* main*/
void main( )
{
int i,j;
int destino[3][3];/*¿Seleccionar? ¿Por qué? ¿Cuál es el punto? ¿Por qué? */
struct link * open _ head =(struct link *)malloc(size of(struct link));/* ¿Eh? ¿Por qué? *
printf("El tamaño máximo es 3");/*¿Adoptar? ¿Por qué? ¿Por qué? Esta es una escultura*/
printf("Por favor ingrese <eight rompecabezas>:\n");
for(I = 0;i<3;i++ ) /*? ¿Por qué? ¿De qué estás hablando? */
{
for(j = 0; j & lt3;j++)
scanf("%d ",& ampopen _ head-& gt ;datos[I][j]);/*¿Qué pasa? ¿Qué? ¿Por qué? Open*/
}
printf("Ingrese & ltocho rompecabezas& gt:\ n ");
for(I = 0; i<3;i++) /*? ¿Por qué? ¿Por qué? ¿Por qué? */
{
for(j = 0; j & lt3;j++)
scanf("%d ", & amp destino[I] [ j]);/*¿Sí? ¿Por qué? destino[][] */
}
open_head->layer = 0;/*¿Qué pasa? ¿Por qué? 0䯶㼎։?¿Oye? */
Ocho (open_head, destino);
}