Online C Compiler
Abrir no compilador

Edição didática em português. O código e suas saídas preservam o original.

Pilha em C: último a entrar, primeiro a sair

Implemente push, pop e consulta ao topo com limites explícitos.

Abrir no compilador

Pilha em C: último a entrar, primeiro a sair
Implemente push, pop e consulta ao topo com limites explícitos.

Uma pilha segue a ordem LIFO: o último elemento inserido é o primeiro a sair. Em uma implementação com array, top identifica a posição superior ou uma convenção que representa a pilha vazia.

Antes de push, verifique a capacidade; antes de pop ou peek, confirme que existe um elemento. Não retorne um valor de dados ambíguo para indicar erro: use um estado separado quando o projeto permitir.

As operações básicas custam O(1). Teste encher a pilha, esvaziá-la e alternar inserções e remoções. Pilhas são úteis para desfazer ações, analisar expressões e representar chamadas pendentes.

Código C

#include <stdio.h>
#define MAX 100

typedef struct {
    int items[MAX];
    int top;
} Stack;

void initStack(Stack *s) { s->top = -1; }
int isFull(Stack *s) { return s->top == MAX - 1; }
int isEmpty(Stack *s) { return s->top == -1; }

void push(Stack *s, int val) {
    if (isFull(s)) {
        printf("Stack Overflow!\n");
        return;
    }
    s->items[++(s->top)] = val;
}

int pop(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack Underflow!\n");
        return -1;
    }
    return s->items[(s->top)--];
}

int peek(Stack *s) {
    if (isEmpty(s)) return -1;
    return s->items[s->top];
}

int main() {
    Stack s;
    initStack(&s);
    push(&s, 10);
    push(&s, 20);
    push(&s, 30);

    printf("Top element: %d\n", peek(&s));
    printf("Popped: %d\n", pop(&s));
    printf("New top: %d\n", peek(&s));
    return 0;
}
Abrir no compilador

Saída esperada

Top element: 30
Popped: 30
New top: 20

Perguntas frequentes

Por que o código e a saída continuam em inglês?

Palavras-chave, identificadores e textos verificados pelos testes são preservados para não alterar o programa. As explicações e os controles estão traduzidos.