Untitled
unknown
c_cpp
2 years ago
1.4 kB
9
Indexable
#include <stdio.h>
#include <stdlib.h>
#define MAX 10 // Tamanho máximo da pilha
typedef struct {
int itens[MAX];
int topo;
} Pilha;
// Inicializar a pilha
void inicializar(Pilha* p) {
p->topo = -1;
}
// Verificar se a pilha está vazia
int estaVazia(Pilha* p) {
return p->topo == -1;
}
// Verificar se a pilha está cheia
int estaCheia(Pilha* p) {
return p->topo == MAX - 1;
}
// Empilhar um elemento
void empilhar(Pilha* p, int valor) {
if (estaCheia(p)) {
printf("Pilha cheia!\n");
} else {
p->itens[++p->topo] = valor;
}
}
// Desempilhar um elemento
int desempilhar(Pilha* p) {
if (estaVazia(p)) {
printf("Pilha vazia!\n");
return -1;
} else {
return p->itens[p->topo--];
}
}
// Ver o elemento no topo da pilha
int topo(Pilha* p) {
if (estaVazia(p)) {
printf("Pilha vazia!\n");
return -1;
} else {
return p->itens[p->topo];
}
}
int main() {
Pilha pilha;
inicializar(&pilha);
// Empilhar alguns elementos
empilhar(&pilha, 1);
empilhar(&pilha, 2);
empilhar(&pilha, 3);
// Exibir o topo da pilha
printf("Topo da pilha: %d\n", topo(&pilha));
// Desempilhar um elemento
printf("Elemento desempilhado: %d\n", desempilhar(&pilha));
// Exibir o novo topo da pilha
printf("Novo topo da pilha: %d\n", topo(&pilha));
return 0;
}
Editor is loading...