Pilha em C
#include
#include // Usada para a função 'pilhaVazia' para retornar resultados de Verdadeiro ou Falso
typedef struct registro{ int dado; struct registro *prox;
} tipoPilha;
//inserir elemento tipoPilha* inserir(int InserirElemento, tipoPilha *pilha){ tipoPilha *aux; aux = (tipoPilha*) malloc(sizeof(tipoPilha)); aux->dado = InserirElemento; //aux usado para passar o elemento inserido para a pilha aux->prox = pilha; pilha = aux;
}
//Checar se a pilha está vazia bool pilhaVazia(tipoPilha *pilha) { if (pilha==NULL) return true; else return false; }
/*Retornar o último elemento inserido da lista (topo). Usa a lógica aplicada na função 'pilhaVazia' para checagem inicial, a fim de evitar erros com lixo de memória. A mesma lógica é aplicada nas funções seguintes. */ int PrintElem(tipoPilha *pilha){ if (pilha!=NULL){ printf("\nO topo da pilha eh o elemento %d", pilha->dado); } else printf("\nPilha vazia");
}
//Remove o elemento do topo da lista tipoPilha* Remove(tipoPilha *pilha){ if (pilha!=NULL){tipoPilha *aux; aux = pilha->prox; free(pilha); pilha = aux; printf("\nElemento removido\n"); } else printf("\nPilha vazia");
}
//Remove todos os elementos da lista. Usa a lógica aplicada na função 'Remove' em um laço. tipoPilha* RemoveTodos(tipoPilha *pilha){ if(!Remove(pilha)){ while (pilha != NULL){ tipoPilha *aux; aux = pilha->prox; free(pilha); pilha = aux; } } else printf("A pilha esta vazia");
}
//Função principal, usada para exibir o menu e para operações básicas de printf e afins. int main() { tipoPilha *pilha = NULL; bool terminou = false;
while (!(terminou)) { int opt=0; printf("\n\nMenu\n"); printf("1 - Inserir elemento no topo da pilha\n"); printf("2 - Verificar se a pilha esta vazia\n"); printf("3 - Exibir elemento do topo da lista\n"); printf("4 - Remover elemento do topo\n"); printf("5 -