Red de conocimiento informático - Aprendizaje de código fuente - Estructuras de datos: experimento de pila

Estructuras de datos: experimento de pila

# include lt; stdio.hgt;

# include lt; stdlib.hgt

typedef struct estudiante //declarar nodo

{ char date; struct Student * next;

}NODE, * PNODE;

entrada de pila de estructura/declaración de typedef

{ PNODE top; ;

}STACK, *PSTACK;

void initstack(PSTACK ps); //¿Parámetros de inicialización? Parámetro 1. Dirección de entrada de la pila

void push(PSTACK, char); //Presione un dato. Parámetro 1. Dirección de entrada de la pila Parámetro 2. Datos a enviar

bool pop (PSTACK, char *); //¿Datos de salida de la pila? Parámetro 1. Dirección de entrada de la pila Parámetro 2. La dirección de los datos que se guardarán Si no se puede extraer la pila, devuelve FALSE true Devuelve TURE

void trversal(PSTACK ps //recorrido de una pila); de datos? Parámetro 1. Dirección de pila

int main(void)

{ STACK ps; char ch; Los caracteres que deben ir a la pila son los mismos que los del elemento superior de la pila, entonces el elemento superior de la pila aparecerá; de lo contrario, se presionará en la pila.\Si el carácter recibido es '. $', detener la entrada "); do { scanf("c",amp;ch); getchar(); if(ch == '$')

break; else if(ch == ps .top-gt; fecha)

pop(amp; ps, amp; ch); else

push(amp; ps, ch }mientras (1); "Los datos de la pila son "); trversal(amp; ps); return 0;

}

void initstack(PSTACK ps)

{ ps-gt. ; top = (PNODE) ​​malloc(sizeof(NODE)); //crea un nuevo nodo if(ps-gt; top == NULL) { printf("¡Error al inicializar la pila!\n"); } else { printf( "¡Terminado la inicialización!\n"); ps-gt; bottom = ps-gt; //Establece la parte inferior de la pila ps-gt;

-gt;top-gt;next = NULL; //Establece el nodo que apunta al final de la pila en NULL } return;

}

void push(PSTACK ps, char avl)

{ PNODE pnew = (PNODE)malloc(sizeof(NODE)); if(pnew == NULL) { printf("Error al asignar memoria. !!!"); ; } pnew -gt; date = avl; //Establece los datos del nodo deseado pnew-gt; next = ps-gt; //Establece la dirección del nodo de nivel superior señalado por el nuevo nodo top = pnew; ; //Establece el nuevo nodo Se devuelve la dirección de nivel superior apuntada;

}

bool pop(PSTACK ps, char * avl)

{ PNODE dell; if(ps-gt;top-gt; next == NULL) //regresa si la pila está vacía abajo { return false } else { dell = ps-gt //contiene la dirección de la pila superior original * avl; = ps-gt; top-gt; date; // contiene los datos del nivel superior ps-gt; top = ps-gt; // establece la dirección del siguiente nivel para que sea la dirección del nivel superior free( dell); dell = NULL; } devuelve verdadero;

}

void trversal(PSTACK ps)

{ PNODE ph = ps-gt; ; while(ph-gt; next != NULL )//si no es el nodo principal { printf("c", ph-gt; date); //datos de salida ph = ph-gt; } printf("\n"); retorno

}