Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- typedef struct elemento* Pilha;
- struct elemento
- {
- int dado;
- struct elemento *prox;
- };
- typedef struct elemento Elem;
- void menu();
- Pilha* PILHA_construtor();//CONTTRUIR
- bool PILHA_vazia(Pilha* pi);//VAZIA
- bool PILHA_push(Pilha* pi, int dado);//PUSh
- void PILHA_pop(Pilha* pi);//REMOVER
- void PILHA_imprimir(Pilha* pi);//IMPRIMIR
- int PILHA_tamanho(Pilha* pi);//TAMANHO
- int main()
- {
- int op, dado;
- Pilha* pi;
- do{
- menu();
- scanf("%d", &op);
- switch(op)
- {
- case 1://criar pilha
- system("cls");
- pi = PILHA_construtor();
- printf("---Pilha Criada Com Sucesso---\n");
- break;
- case 2://PUSH - INSERIR
- system("cls");
- printf("Entre com o dado a ser inserido\n");
- scanf("%d", &dado);
- PILHA_push(pi, dado);
- system("cls");
- break;
- case 3://POP
- system("cls");
- if(PILHA_vazia(pi))
- {
- printf("---Erro Pilha Vazia---\n");
- }else{
- PILHA_pop(pi);
- }
- break;
- case 4://TAMANHO
- system("cls");
- if(PILHA_vazia(pi))
- {
- printf("---Pilha Vazia---\n");
- }else{
- printf("---A Pilha Possui %d Elementos---\n", PILHA_tamanho(pi));
- }
- break;
- case 5:
- system("cls");
- if(PILHA_vazia(pi))
- {
- printf("---Erro Pilha vazia---\n");
- }else{
- PILHA_imprimir(pi);
- }
- break;
- case 6:
- system("cls");
- printf("---Programa encerrado---\n");
- exit(0);
- break;
- default:
- printf("Opcao invalida\n");
- break;
- }
- }while(op !=6 );
- return 0;
- }
- //MENU
- void menu()
- {
- printf("Escolha uma opcao:\n1 - Criar pilha\n2 - Inserir elementos\n3 - Remover\n4 - Tamanho da Pilha\n5 - Imrpimir Elementos\n6 - Sair\n");
- }
- //CRIAR Pilha
- Pilha* PILHA_construtor()
- {
- Pilha* pi = (Pilha*) malloc(sizeof(Pilha));
- if(pi != NULL)
- *pi = NULL;
- return pi;
- }
- //PUSH INSERIR
- bool PILHA_push(Pilha* pi, int dado)
- {
- if(pi == NULL)
- return false;
- Elem* no;
- no = (Elem*) malloc(sizeof(Elem));
- if(no == NULL)
- return false;
- no->dado = dado;
- no->prox = (*pi);
- *pi = no;
- return true;
- }
- //POP PILHA
- void PILHA_pop(Pilha* pi)
- {
- Elem *no = *pi;
- *pi = no->prox;
- free(no);
- }
- //IMPRIMIR
- void PILHA_imprimir(Pilha* pi)
- {
- Elem* no = *pi;
- while(no != NULL){
- printf("DADO: %d\n",no->dado);
- printf("------------\n");
- no = no->prox;
- }
- }
- //PILHA VAZIA
- bool PILHA_vazia(Pilha* pi)
- {
- if(pi == NULL)
- return true;
- if(*pi == NULL)
- return true;
- return false;
- }
- //PILHA TAMANHO
- int PILHA_tamanho(Pilha* pi)
- {
- if(pi == NULL)
- return 0;
- int cont = 0;
- Elem* no = *pi;
- while(no != NULL){
- cont++;
- no = no->prox;
- }
- return cont;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement