Skip to content

Commit

Permalink
new file: 11-pilha-estatica.c
Browse files Browse the repository at this point in the history
new file:   12-pilha-dinamica.c
  • Loading branch information
anabeatrizchagas committed Jan 22, 2023
1 parent 1335021 commit f6cf433
Show file tree
Hide file tree
Showing 2 changed files with 216 additions and 0 deletions.
111 changes: 111 additions & 0 deletions 11-pilha-estatica.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
// importando pacotes

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

// 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;
}
105 changes: 105 additions & 0 deletions 12-pilha-dinamica.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
// importando pacotes

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

// 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;
}

0 comments on commit f6cf433

Please sign in to comment.