Red de conocimiento informático - Conocimiento informático - Código fuente del laberinto de bolas

Código fuente del laberinto de bolas

Laberinto

¿Ver texto impreso en el portapapeles?

# include ltstdio.h gt

# include ltstdlib.h gt

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

#Definición N 11 /*La longitud de la primera dimensión del mapa*/¿Ver texto sin formato, copiarlo al portapapeles e imprimir?

# include ltstdio.h gt

# include ltstdlib.h gt

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

#Definición N 11 /*La longitud de la primera dimensión del mapa*/

estructura typedef {

int x /*Subíndice de fila*/

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

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

}Tipo de datos;

Struct SeqStack {/ *Definición del tipo de pila de secuencia*/

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

Tipo de datos s[MAXNUM];

};

typedef struct seq stack * PSeqStack; /*tipo de puntero de 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 seq stack));

if (pastack == NULL)

printf("¡¡Espacio insuficiente!!\n");

Otros

pastack- gt; -1;

Devolver pastack

}

int isEmptyStack _ seq(PSeqStack pastack){

Devolver pastack- gt;t = =-1;

p>

}

/*Empujar un elemento x */

void push_seq( PSeqStack pastack, tipo de datos x) {

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

printf("Overflow! \n ");

De lo contrario {

pastack-gt;t;

p>

pastack-gt; s[pastack-gt; t] = x; /p>

/*Eliminar el elemento superior de la pila* /

void pop_seq( PSeqStack pastack ) {

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

printf("¡Desbordamiento inferior! \n ");

Otros

pastack- gt;t-;

}

/*Cuando la pila apuntada por pastack no Cuando está vacío, busque el valor del elemento superior de la pila*/

Tipo de datos top_seq( PSeqStack pastack) {

return(pastack- gt;s

[pastack- gt;t]);

}

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

Elemento de tipo de datos ;

elemento.x = x

elemento.y = y

elemento.d = d

push_seq(st, elemento) ;

}

void printpath(PSeqStack st) {

Elemento de tipo de datos;

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

Y (! isEmptyStack_seq(st)) {

elemento = top _ seq(ST);

pop _ seq(ST ) ;

printf("\nEl nodo está: alineado \n ", elemento.x, elemento. y);/*Imprime cada punto en la ruta*/

}

}

/*Encuentra el camino desde el laberinto de entrada [x1][y1] hasta el laberinto de salida [x2][y2] en el laberinto*/

/*1 de ellos

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

Elemento de tipo de datos;

ST = createEmptyStack _ seq();

Laberinto[x 1][y 1]= 2; /*Entra desde la entrada y marca*/

pushtostack(st, x1, y1, -1); la pila */

Y (!Isompty stack _ seq (ST)) {/*Cuando no funciona, retrocede paso a paso*/

elemento = top _ seq(ST);

pop _ seq(ST);

i = elemento.xj = elemento.y

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

g = i dirección[k][0]; >

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

imprimir ruta (ST) ;/*Imprimir ruta*/

Regresar;

}

If (laberinto[g][h] == 0) {/*Ve a donde quieras no he sido*/

Maze[g][h]= 2;/*mark*/

pushtostack(st,I,j,k);/*poner stack*/

I = g; j = h =-1; /*Convierte el siguiente punto al punto actual*/

}

}

}

printf("\nRuta no encontrada.

\ n ");/*Ruta no encontrada después de la reversión de la pila*/

}

int main(){

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

int laberinto[][11] = {

1, 1, 1,1 ,1,1,1,1,1,1,1,

1,0,1,0,0,1,1,1,0,0,1,

1,0,0,0,0,0,1,0,0,1,1,

1,0,1,1,1,0,0,0,1, 1, 1,

1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1,

1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1,

1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

};

int x1, x2, y1, y2;

printf ("\n¿De dónde? (línea y arreglo)");

printf("\nIngrese línea y arreglo (línea gt1, arreglo gt1):");

scanf(" d d ", ampx1.

y 1);

printf("\n¿Dónde termina? (línea y disposición)");

printf("\nIngrese línea y disposición (línea lt=6, Organizar lt=9): ");

scanf("d d", ampx2, ampy2);

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

Devuelve 0;

}

estructura typedef {

int x;*Subíndice de fila*/

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

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

}Tipo de datos;

Struct SeqStack {/* Tipo de pila de secuencia definición */

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

Tipo de datos s[MAXNUM];

};

}; p>

typedef struct seq stack * PSeqStack;/*tipo de puntero de tipo de pila secuencial*/

PSeqStack pastack/* pastack es una variable de puntero que apunta al secuencial pila*/

PSeqStack createEmptyStack _ seq(void){

PSeqStack pastack

pastack =(PSeqStack)malloc(sizeof(struct seq stack));

if (pastack = = NULL)

printf("¡¡Espacio insuficiente!!\n ");

Otros

pastack- gt ; t =-1;

Devolver pastack

}

int isEmptyStack _ seq(PSeqStack pastack){

Devolver pastack- gt ; t = =-1;

}

/*Empujar un elemento x */

void push_seq( PSeqStack pastack, tipo de datos x) {

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

printf("Overflow!\n ");

De lo contrario{

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("¡Desbordamiento inferior! \n ");

Otros

pastack- gt;t-;

}

/*Cuando la pila apuntada por pastack no Cuando está vacío, busque el valor del elemento superior de la pila*/

Tipo de datos top_seq( PSeqStack pastack) {

return(pastack- gt; s[pastack- gt; t]);

}

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

Elemento de tipo de datos;

elemento .x = x

elemento.y = y

elemento.d = d

push_seq(st, elemento);

}

void printpath(PSeqStack st) {

Elemento de tipo de datos;

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

Y (!isEmptyStack_seq(st) ) {

elemento = top _ seq(ST);

pop _ seq(ST

printf("\nEl nodo está: arreglado con líneas\ n); ", elemento. Encuentra el camino desde el laberinto de entrada [x1][y1] hasta el laberinto de salida [x2][y2]*/

/*donde 1

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

Elemento de tipo de datos;

ST = createEmptyStack _ seq();

Laberinto[x 1][y 1]= 2 ;/*Desde la entrada Entra y marca */

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

Y (! Isompty stack_seq); (st)) {/*Cuando no funciona, retrocede paso a paso*/

element = top _ seq(ST);

pop _ seq(ST)

i = element.xj = element.y

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

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

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

imprimir ruta(ST /*Imprimir ruta*/

Regresar;

}

Si (laberinto[g][h] == 0) {/*Ve a donde no has estado*/

Laberinto[g][h ]= 2; /*Marcar*/

pushtostack(st, I, j, k); /*Poner en la pila*/

I = j = h; k =-1; /*Conversión del siguiente punto Para el punto actual*/

}

}

}

printf(" \nRuta no encontrada.

\ n ");/*Ruta no encontrada después de la reversión de la pila*/

}

int main(){

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

int laberinto[][11] = {

1, 1, 1,1 ,1,1,1,1,1,1,1,

1,0,1,0,0,1,1,1,0,0,1,

1,0,0,0,0,0,1,0,0,1,1,

1,0,1,1,1,0,0,0,1, 1, 1,

1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1,

1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1,

1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,

1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1

};

int x1, x2, y1, y2;

printf ("\n¿De dónde? (línea y arreglo)");

printf("\nIngrese línea y arreglo (línea gt1, arreglo gt1):");

scanf(" d d ", ampx1.y 1);

printf("\n¿Dónde termina? (línea y permutación)");

printf("\nIngrese línea y organice (línea lt=6, organizar lt=9): ");

scanf("d d ", ampx2, ampy2);

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

Devuelve 0;

}