Buscar

pilha estatica

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

#include <stdio.h>
#define MAX 8
#define true 1
#define false 0
typedef int bool;
typedef int KEY;
typedef struct {
KEY chave;
} DATA;
typedef struct {
DATA A[MAX];
int topo;
} PILHA;
void inicializar(PILHA* p) {
p->topo = -1;
}
void reinicializar(PILHA* p) {
p->topo = -1;
}
int size(PILHA* p) {
return p->topo + 1;
}
void print(PILHA* p){
printf("Pilha: ");
int i;
for (i=p->topo; i>=0; i--)
printf("%i ", p->A[i].chave);
printf("\n");
}
bool push(PILHA* p, DATA data){
if(p->topo >= MAX-1) return false;
p->topo = p->topo+1;
p->A[p->topo] = data;
return true;
}
bool pop(PILHA* p, DATA* data){
if (p->topo == -1) return false;
*data = p->A[p->topo];
p->topo = p->topo-1;
return true;
}
int main() {
DATA e, d1, d2, d3, d4, d5, d6, d7, d8;
PILHA p;
inicializar(&p);
d1.chave = 1; d2.chave = 2; d3.chave = 3; d4.chave = 4; 
d5.chave = 5; d6.chave = 6; d7.chave = 7; d8.chave = 8;
 
push(&p, d1);
push(&p, d2);
push(&p, d3);
push(&p, d4);
push(&p, d5);
push(&p, d6);
push(&p, d7);
push(&p, d8);
pop(&p, &e);
pop(&p, &e);
pop(&p, &e);
pop(&p, &e);
pop(&p, &e);
push(&p, d1);
print(&p);
}

Outros materiais