Sistema de contabilidad de origen
#Includes
#Includes
15
Definir M 15
Definir N etiqueta de estructura //definir El tipo de coordenadas de punto del laberinto.
{
Interpretación x;
;
}
Elemento estructural // Elemento de pila "Amor" . .
{
Entero x, y, // fila x, columna y
Entero d // La dirección de desarrollo futuro de D
};
Definición de tipo LStack // La estructura de la pila de cadena
{
ELEM;
Bajo la estructura de LStack ;
p>} * PLStack
/* * * * * * * * * * *Función de pila* * * * * * * * * * * * * * *
Explicación de la pila de inicialización (pl stack s)//Construcción de una pila vacía
{
S = NULL
Return 1;
}
Explicación propiedad de la pila (pl stack S)//Determina si la pila está vacía.
{
Si (S == NULL) devuelve 1.
Otros
0;
}
gt explicación push (pl elemento de pila e) //Enviar nuevo elemento de datos.
{
pl pila P;
Malloc (tamaño (LStack)) donde P = (pl pila BR/>);
p->; Siguiente = S;
s = P;
Devolver 1
}
< p; >La pila de elementos s// en la parte superior de la pila PL.{
pl pila p;
(atributo de pila)
{
gte = S- gt ;ELEM;
p = S;
S = S- gt;Abajo;
Libre(p);
Retorno 1 ;
}
Otros
Devuelve 0;
}
/* * * * * * * * * * * * * *Función de ruta de laberinto buscada* * * * * * * * * * * * * *
Ruta de laberinto no válida (inicio de etiqueta de estructura, final de etiqueta de estructura, laberinto [M] [N ], explicación de diradd [4] [2])
{
INT I, J, D, A, B;
ELEM, e;
S2 pl pila s 1;
pila inicial(s 1);
pila inicial(S2);
[inicio x. start . y]=//El laberinto marcado en el punto de entrada.
elem.x = inicio.x
elem .y = inicio .
elem d =-1; p>
elem. p>
push(S1, ELEM);
(!stack vacío(s 1)) // No hay ruta de pila separada.
{
(S1, ELEM) popularidad;
= elem.x
J = elem.y
d = elem . d 1; //dirección hacia abajo
y (d)
{
a = I diradd[D][0 ];
b? = J diradd[D][1];
(= = end.x amp amp amp amp amp laberinto[A][B]= = 0)//Salir
{
elem . x =;
elem . y = J
elem.d = D
Push(s 1 ELEM);
elem.x =
elem . y = B;
Elem.d = 886, // La dirección de salida -1 determina si se exporta.
push(s1,elem);
printf("\n0=este=sur=oeste=laberinto del norte 886\n\nRuta: (coordenadas de fila y coordenadas de columna, Dirección )\n"); ltBR/(S1), //Ir a casa. Secuencia y secuencia de ruta del laberinto de salida
{
Hot(S1, electron);
Push(S2, e);
}
Y (S2) {
Popular (S2, comercio electrónico);
printf("->; (d, d, d) "antes, EY, editor);
}
Return; //Dos bucles, original y avance, pero si se encuentra un error, salir finalizará el programa, así es sigue siendo una buena opción devolver O ( ∩ _ ∩)O. ...
}
(Maze[A][B]= = 0)//Encuentra la no salida del punto anterior.
{
Laberinto[A][B]= 2//Mark ha pasado este punto.
elem . x = I;
elem y = J
elem.d = D
Empujar(S1, ELEM ); //Apilar en la posición actual
I = A; //Un punto convierte el punto actual
j = B;
d =-1 ;
}
D
}
}
Printf's ("No se ha encontrado ninguna salida a este laberinto \ n ");
}
/a gt;
/* * * * * * * * * * * *Construye un laberinto* * * * * * * * * * * * * *
initmaze(INT laberinto [M] [N]) no es válido
{
INT I, J ;
p>
INT M, N; //Fila, columna del laberinto
Printf("Ingrese el número del laberinto M = ");
('scanf is d' , m;
Printf's("Ingrese el número de columnas en el laberinto N = ");
scanf's (' d ', n);
printf ("\nPor favor ingrese la fila y columna del laberinto:\nNo.
1, separado por espacios, representa la Gran Muralla\ n ", m, n);
Es (I = 1; lt= M)
(J = 1; lt = N; J )
Función Scanf (" d ", y laberinto[I][J]);
Printf's ("El laberinto que construiste es O(∩_∩) o...\ n ");
(I = 0 lt= M 1, i)//Agrega una pared.
{
Laberinto[ I][0]= 1;
Laberinto[I][N 1]= 1;
}
(J = 0; lt= N 1 ; J )
{
Laberinto[0][J]= 1;.../ gt;Laberinto[M 1][J]= 1; p>
}
(I = 0; i lt= M 1, i)//Laberinto de salida
{ BR/ gt; (J = 0; lt= N 1;J )
Printf ("d",laberinto[I][J]);
printf("\n");
}
}
Invalid main()
{
Explicación STO[M][N];
Etiqueta de estructura inicio y end; //Inicia y completa la coordinación de entrada y salida
Adición de anotaciones[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0 } }; //La dirección del incremento de fila y de columna, desde el sur, norte, este, oeste
init maze(STO); p>printf("Ingrese la abscisa y la ordenada de la entrada [separadas por comas\n");
("d, d", start.x y start.y) scanf
() de printf ingresa la coordenada de abscisa de salida, coordenadas [separadas por comas]\n ");
(" d mes d día", end.x y end.y ) scanf
MazePath(punto de inicio, punto final, STO Express, agregar); //Encontrar la ruta
Sistema ("pausa");
} p>