Untitled

mail@pastecode.io avatar
unknown
c_cpp
7 months ago
1.4 kB
4
Indexable
Never
#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;
}