From f6cf43376cfdf8c9602c27d11302628fc6310677 Mon Sep 17 00:00:00 2001 From: "Ana Beatriz R. Chagas" <121564402+anabeatrizchagas@users.noreply.github.com> Date: Sun, 22 Jan 2023 18:42:35 -0300 Subject: [PATCH] new file: 11-pilha-estatica.c new file: 12-pilha-dinamica.c --- 11-pilha-estatica.c | 111 ++++++++++++++++++++++++++++++++++++++++++++ 12-pilha-dinamica.c | 105 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+) create mode 100644 11-pilha-estatica.c create mode 100644 12-pilha-dinamica.c diff --git a/11-pilha-estatica.c b/11-pilha-estatica.c new file mode 100644 index 0000000..2143770 --- /dev/null +++ b/11-pilha-estatica.c @@ -0,0 +1,111 @@ +// importando pacotes + +#include +#include +#include + +// definindo tamanho padrao do vetor + +#define MAX 50 + +// criando estruturas + +typedef struct +{ + int chave; + +} REGISTRO; + +typedef struct +{ + REGISTRO V[MAX]; + int topo; + +} PILHA_ESTAT; + +// declarando funcoes + +void inicializacao(PILHA_ESTAT *p); +void exibicao(PILHA_ESTAT *p); // imprimindo do ultimo ao primeiro inserido + +int tamanho(PILHA_ESTAT *p); +int pop(PILHA_ESTAT *p); // saida de dados + +bool estaCheia(PILHA_ESTAT *p); +bool push(PILHA_ESTAT *p, int ch); // entrada de dados + +// implementando funcoes + +void inicializacao(PILHA_ESTAT *p) +{ + p->topo = -1; + +} + +void exibicao(PILHA_ESTAT *p) +{ + int i; + + for(i = p->topo; i > -1; i--) printf("%d ", p->V[i].chave); + +} + +bool push(PILHA_ESTAT *p, int ch) +{ + if(estaCheia(p) == true) // pilha cheia + { + return (false); + + } else { // pilha com espaco + + p->V[p->topo + 1].chave = ch; + p->topo++; + + return (true); + + } + +} + +int tamanho(PILHA_ESTAT *p) +{ + int tam, i; + tam = 0; + + for(i = 0; i <= p->topo; i++) tam = i + 1; + + return (tam); + +} + +int pop(PILHA_ESTAT *p) +{ + if(p->topo == -1) // pilha vazia + { + return (-1); + + } else { // pilha com elem + + int resp = p->V[p->topo].chave; + p->topo--; + + return (resp); + + } + +} + +bool estaCheia(PILHA_ESTAT *p) +{ + if(p->topo >= MAX - 1) return (true); + else return (false); + +} + +// funcao main + +int main() +{ + + return 0; +} \ No newline at end of file diff --git a/12-pilha-dinamica.c b/12-pilha-dinamica.c new file mode 100644 index 0000000..6943ed1 --- /dev/null +++ b/12-pilha-dinamica.c @@ -0,0 +1,105 @@ +// importando pacotes + +#include +#include +#include +#include + +// criando estruturas + +typedef struct str +{ + int chave; + struct str* prox; + +} NO; + +typedef struct +{ + NO* topo; + +} PILHA_DIN; + +// declarando funcoes + +void inicializacao(PILHA_DIN *p); +void exibicao(PILHA_DIN *p); + +int tamanho(PILHA_DIN *p); +int pop(PILHA_DIN *p); + +bool push(PILHA_DIN *p, int ch); + +// implementando funcoes + +void inicializacao(PILHA_DIN *p) +{ + p->topo = NULL; + +} + +void exibicao(PILHA_DIN *p) +{ + NO* aux = p->topo; + + while(aux != NULL) + { + printf("%d ", aux->chave); + aux = aux->prox; + + } + +} + +int tamanho(PILHA_DIN *p) +{ + int tam = 0; + NO* aux = p->topo; + + while(aux != NULL) + { + aux = aux->prox; + tam++; + + } + + return (tam); + +} + +int pop(PILHA_DIN *p) +{ + if(p->topo == NULL) + { + return (-1); + + } else { + + int resp = p->topo->chave; + + NO* aux = p->topo->prox; + free(p->topo); + p->topo = aux; + + return (resp); + + } + +} + +bool push(PILHA_DIN *p, int ch) +{ + NO* novo = (NO*) malloc(sizeof(NO)); + novo->chave = ch; + novo->prox = p->topo; + p->topo = novo; + +} + +// funcao main + +int main() +{ + + return 0; +} \ No newline at end of file