Advertisement
Ricarte

PilhaDinamica

Nov 19th, 2022 (edited)
895
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | Software | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #define MAX  5
  5.  
  6. typedef struct pilha{ // define o tipo de dado Pilha de tamanho MAX
  7.     int elem[MAX];
  8.     int top;
  9. }Pilha;
  10.  
  11. void criaP(Pilha *p){ // aloca dinamicamente a Pilha na mémoria
  12.     p = malloc(sizeof(Pilha));
  13.     p->top = 0;
  14. }
  15.  
  16. void destroiP(Pilha *p){ // libera a Pilha da mémoria
  17.     free(p);
  18. }
  19.  
  20.  bool full(Pilha *p){ // verifica se a posição no topo e igual ao MAX
  21.     bool deuCerto;
  22.     if (p->top == MAX){
  23.         deuCerto = true;
  24.         return deuCerto;
  25.     }else{
  26.         deuCerto = false;
  27.         return deuCerto;
  28.     }
  29. }
  30.  
  31. bool empty(Pilha *p){ // veridica se a posição no topo e igual a 0
  32.     bool deuCerto;
  33.     if(p->top == 0){
  34.         deuCerto = true;
  35.         return deuCerto;
  36.     }else{
  37.         deuCerto = false;
  38.         return deuCerto;
  39.     }
  40. }
  41.  
  42.  
  43. bool push(Pilha *p, int x){ /* verifica se a Pilha está cheia, caso não incrementa o topo e insere um elemento
  44.                                 na mesma posição*/
  45.     bool deucerto;
  46.     if(full(&p) == true){
  47.         deucerto = false;
  48.         return deucerto;
  49.     }else{
  50.         p->elem[p->top] = x;
  51.         p->top = p->top + 1;
  52.         deucerto = true;
  53.         return deucerto;
  54.     }
  55. }
  56.  
  57. bool pop(Pilha *p, int *x){ /*verifica se a Pilha está vazia, caso não o ponteiro pra inteiro recebe o elemento
  58.                             do topo e decrementa o topo da Pilha*/
  59.     bool deuCerto;
  60.     if(empty(&p) == true){
  61.         deuCerto = false;
  62.         return deuCerto;
  63.     }else{
  64.         *x = p->elem[p->top];
  65.         p->top = p->top - 1;
  66.         deuCerto = true;
  67.         return deuCerto;
  68.     }
  69. }
  70.  
  71. int main(){
  72.     Pilha p1;
  73.     int num;
  74.     criaP(&p1);
  75.     while(full(&p1) == false){
  76.         scanf("%d", &num);
  77.         push(&p1, num);
  78.     }
  79.     while (empty(&p1) == false){
  80.         pop(&p1, &num);
  81.         printf("%i", num);
  82.     }
  83.     destroiP(&p1);
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement