Red de conocimiento informático - Computadora portátil - Programación en lenguaje C, elige uno de tres, deshazte de 360 ​​puntos (recompensa 100, 260 adicionales), ahorra antes de la tarde del 1 de julio y ¡será válido!

Programación en lenguaje C, elige uno de tres, deshazte de 360 ​​puntos (recompensa 100, 260 adicionales), ahorra antes de la tarde del 1 de julio y ¡será válido!

Laberinto

¿ver copia simple en el portapapeles?

#include lt;stdio.hgt

#include lt;stdlib.hgt; #define MAXNUM 100/* El número máximo de elementos en la pila*/

#define N 11 MAXNUM 100/* El número máximo de elementos en la pila*/

#define N 11 /* La longitud de la primera dimensión del mapa*/ ¿ver copia simple en el portapapeles?

#include lt; stdio.hgt;

#include lt;

#include lt; stdlib.p>

#define MAXNUM 100/* Número máximo de elementos en la pila*/

#define N 11 /* Longitud de la primera dimensión del mapa* /

typedef struct {

int x;/* fila subíndice*/

int y;/* columna subíndice */

int d; /* Dirección del movimiento */

}DataType;

struct SeqStack { /* Definición del tipo de pila secuencial */

int t; / * Indica la ubicación superior de la pila */

DataType s[MAXNUM]

}

typedef struct SeqStack *; PSeqStack; /* Tipo de puntero al tipo de pila secuencial */

PSeqStack pastack; /* pastack es una variable de puntero que apunta a la pila secuencial */

PSeqStack createEmptyStack_seq ( void ) {

PSeqStack pastack;

pastack = (PSeqStack)malloc(sizeof(struct SeqStack));

if (pastack == NULL)

printf("¡Sin espacio! !! \n");

else

pastack-gt; t = -1;

devolver pastack;

}

int isEmptyStack_seq( PSeqStack pastack ) {

return pastack-gt == -1

}

/* Devuelve el elemento x empujar a la pila*/

void push_seq( PSeqStack pastack, DataType x) {

if( pastack-gt;t gt;= MAXNUM - 1)

printf( "Desbordamiento

Pruebe cada dirección*/

g = i dirección[k][0]; h = j dirección[k][1].

if (g == x2 amp ;amp ; h == y2 amp;amp; maze[g][h] == 0) { /* Ir al punto de salida*/

printpath(st /* Imprimir ruta*/

return;

}

if (laberinto[ g][h] == 0) { /* Ir al punto no recorrido*/

laberinto[g][h] = 2; /* marcar*/

pushtostack(st, i, j, k /* apilar*/

i = g); ; j = h; k = -1; /* Convertir el siguiente punto al punto actual*/

}

}

}

}

printf("\nLa ruta no ha sido encontrada.\n"); /*La pila devuelve la ruta no encontrada*/

}

}

int main(){

int dirección[][2]={0, 1, 1, 0, 0, -1, -1

};

int x1, x2, y1, y2;

printf("/n¿de dónde? (fila y disposición)"); printf("/nentrada de línea y arreglo(linegt;1, arreglogt;1):"

scanf("dd",amp;x1,amp;y1); printf("/n¿dónde terminar?(línea y organizar)");

printf("/ningresar línea y organizar? organizar(linelt;=6, organizarlt;=9):"); p> p>

scanf("d d",amp;x2,amp;y2);

laberinto(laberinto,dirección,x1,y1,x2,y2); > devolver 0;

}

typedef struct {

int x;/* subíndice de fila*/

int y;/* subíndice de columna*/

int d; /* Dirección de movimiento*/

}DataType;

struct SeqStack { /* Definición de tipo de pila secuencial */

int t;* Indica la ubicación de la parte superior de la pila */

DataType s[MAXNUM]

}; typedef struct SeqStack *PSeqStack /* Tipo de puntero del tipo de pila secuencial */

PSeqStack pastack;

PSeqStack createEmptyStack_seq( void ) {

PSeqStack pastack;

pastack = (PSeqStack)malloc(sizeof(struct SeqStack));

if (pastack == NULL)

printf("¡¡¡Sin espacio. !!! \n")! !!! \n");

else

pastack-gt; t = -1;

devolver pastack;

}

int isEmptyStack_seq( PSeqStack pastack ) {

return pastack-gt; t == -1

}

/* Will El elemento x se empuja a la pila*/

void push_seq( PSeqStack pastack, DataType x) {

if( pastack-gt;t gt;= MAXNUM - 1)

printf( "¡Desbordamiento!\n" );

else {

pastack-gt;t;

pastack-gt;s[pastack; -gt ;t] = x;

}

}

/* Eliminar el elemento superior de la pila*/

void pop_seq( PSeqStack pastack ) {

if (pastack-gt; t == -1 )

printf( "Underflow!\n"

else);

pastack-gt;t--;

}

/* Cuando la pila señalada por pastack no es una pila vacía, encuentre el valor de elemento superior de la pila*/

DataType top_seq( PSeqStack pastack ) {

return (pastack-gt; s[pastack-gt. t]); >}

void pushtostack( PSeqStack st, int x, int y, int d) {

elemento DataType; p>

elemento.y = y;

elemento.d = d;

push_seq(st, elemento);

void printpath(PSeqStack st) {

p>

Elemento tipo de datos

printf("\n\nLa ruta es:\n"); >

mientras(! isEmptyStack_seq(st)) {

elemento = top_seq(st);

pop_seq(st);

printf("/nel nodo está: alineado \ n", element.x, element.y); /* Imprime cada punto del camino */

}

}

}

}

/* Laberinto [M][N] El camino desde el laberinto de entrada [x1][y1] hasta el laberinto de salida [x2][y2]*/

/* donde 1lt;=x1,x2lt;=M-2,1lt;=y1,y2lt;=N-2 */

void mazePath(int laberinto[][N] , int dirección[][2], int x1, int y1, int x2, int y2) {

int i, j, k, g, h

PSeqStack st;

p>

Elemento DataType;

st = createEmptyStack_seq( );

laberinto[x1][y1] = 2 /* A partir del; punto de entrada, márquelo */

pushtostack(st, x1, y1, -1 /* Punto de entrada a la pila*/

while (! y;

); for (k = element.d 1 ; k lt; = 3; k ) { /* Pruebe cada dirección por turno*/

g = i dirección[k][0]; k][1].

p>

if (g == x2 amp; amp; h == y2 amp; amp; maze[g][h] == 0) { /* Ir a salida punto*/

printpath(st); /* imprimir ruta*/

return

}

if (laberinto[ g ][h] == 0) { / * Al punto no recorrido*/

laberinto[g][h] = 2; /* Marca*/

pushtostack(st, i, j, k); / * Ir a la pila*/

i = g; j = h = -1 /* Convertir el siguiente punto al punto actual*/

}

}

}

}

printf("\nLa ruta no ha sido encontrada.\n"); *La pila devuelve la ruta que no se ha encontrado*/

}

}

int main(){

int dirección [][2]={0, 1, 1, 0, 0, -1, -1

}

int x1, x2, y1, y2; >

printf("/nde dónde?(línea y organizar)");

printf("/nentrada de línea y organizar(linegt;1, organizargt;1):"); >

scanf("d d",amp;x1 , amp; y1);

printf("/n¿dónde terminar? (línea y organización)"); ("/ningresar línea y organizar? organizar(linelt;= 6, organizarlt;=9): "

scanf("d d",amp;x2,amp;y2

);

rutadellaberinto(laberinto,dirección,x1,y1, x2, y2);

devuelve 0;

}