Ejemplo De Pila En C
Enviado por eliadp • 9 de Febrero de 2014 • 597 Palabras (3 Páginas) • 259 Visitas
#include <stdio.h>
#include <stdlib.h>
struct Node{
char c;
struct Node* next;
};
void push(struct Node** Stack, char c){
struct Node* NewNode;
if(*Stack == NULL){ //Si la pila esta vacia
*Stack = (struct Node*)malloc( sizeof(struct Node) );
(*Stack)->c = c;
(*Stack)->next = NULL;
}
else{
NewNode = (struct Node*)malloc( sizeof(struct Node) );
NewNode->c = c;
NewNode->next = *Stack;
*Stack = NewNode;
}
}
char pop(struct Node** Stack){
char c;
struct Node* Temporal;
if(*Stack == NULL)
return '\0';
Temporal = *Stack;
*Stack = (*Stack)->next;
c = Temporal->c;
free(Temporal);
return c;
}
void display(struct Node* Stack){
if(Stack == NULL){
printf("Vacio");
return;
}
while(Stack != NULL){
printf("%c\n", Stack->c);
Stack = Stack->next;
}
}
int main(){
struct Node* Stack = NULL;
char c;
char option = '1';
while(option != 'e'){
printf("\n1) Introducir caracter a la pila\n");
printf("2) Quitar elemento de la pila\n");
printf("3) Mostrar elementos de la pila\n");
printf("e) Salir del programa \n");
scanf("%c", &option);
getchar();
switch(option){
case '1':
printf("Que caracter deseas introducir: ");
scanf("%c", &c);
getchar();
push(&Stack, c);
break;
case '2':
c = pop(&Stack);
if(c == '\0')printf("No se puede quitar caracter, pila vacia...\n");
else printf("caracter a sacar de la pila: %c\n", c);
break;
case '3':
printf("La pila actual es: \n");
display(Stack);
fputc('\n', stdout);
break;
case 'e':break;
default: printf("Opcion no valida...\n\n");
}
...