Estrutura Stack
Stack opera no topo: push adiciona, pop remove e peek consulta.
O que é Estrutura Stack?
Stack opera no topo: push adiciona, pop remove e peek consulta.
Implemente operações last-in, first-out.
Pontos importantes
- Defina invariantes antes das operações.
- Trate estados vazio, cheio e falha de memória.
- Avalie complexidade e ownership juntos.
Exemplos de código C e C++
main.c
#include <stdio.h>
typedef struct {
int data[8];
int size;
} Stack;
int push(Stack *stack, int value) {
if (stack->size == 8) return 0;
stack->data[stack->size++] = value;
return 1;
}
int pop(Stack *stack, int *value) {
if (stack->size == 0) return 0;
*value = stack->data[--stack->size];
return 1;
}
int main(void) {
Stack stack = {{0}, 0};
int value;
push(&stack, 10);
push(&stack, 20);
pop(&stack, &value);
printf("%d\n", value);
}
20
C++
main.cpp
#include <iostream>
#include <stack>
int main() {
std::stack<int> values;
values.push(10);
values.push(20);
std::cout << values.top() << '\n';
values.pop();
}
20
Comparação entre C e C++
A versão C fixa detecta overflow e underflow; std::stack gerencia capacidade via container subjacente.
C
Estruturas e operações ficam separadas e a alocação é explícita.
C++
Classes e containers protegem invariantes e recursos.
Exercícios práticos
Execute as duas versões e modifique-as para observar suas garantias.
- Teste estados vazio e cheio.
- Implemente cleanup e procure vazamentos.
- Compare com um container padrão.