Como implementar uma pilha em C: passo a passo.
By marcosChalet
2023-04-21
TEXTO TEMPORÁRIO GERADO PELO CHAT GPT
Uma pilha é uma estrutura de dados que permite que os elementos sejam inseridos e removidos em uma ordem específica. Em uma pilha, a inserção e remoção de elementos ocorrem apenas em um extremo, conhecido como "topo" da pilha. Neste post, vamos ver como implementar uma pilha em C.
1. Definindo a estrutura da pilha
Antes de começar a escrever o código da pilha, precisamos definir a estrutura que será usada para representá-la. A estrutura da pilha deve incluir um ponteiro para o topo da pilha e um inteiro para rastrear o número de elementos na pilha. Aqui está um exemplo:
typedef struct Stack {
int *array;
int top;
int size;
} Stack;
Neste exemplo, usamos um array para armazenar os elementos da pilha e usamos a variável "top" para rastrear o índice do topo da pilha. A variável "size" representa o tamanho máximo da pilha.
2. Criando uma função para inicializar a pilha
Antes de usar a pilha, precisamos inicializá-la. Isso envolve a alocação de memória para o array da pilha e a definição do valor inicial do topo. Aqui está uma função que faz isso:
void initStack(Stack *stack, int size) {
stack->array = (int *) malloc(sizeof(int) * size);
stack->top = -1;
stack->size = size;
}
Esta função recebe um ponteiro para a estrutura da pilha e o tamanho máximo da pilha. Ele aloca memória para o array da pilha e define o valor do topo como -1.
3. Adicionando elementos à pilha
Para adicionar um elemento à pilha, precisamos aumentar o valor do topo e adicionar o elemento ao array da pilha. Aqui está uma função que faz isso:
void push(Stack *stack, int element) {
if (stack->top < stack->size - 1) {
stack->top++;
stack->array[stack->top] = element;
} else {
printf("Stack overflow\n");
}
}
Esta função recebe um ponteiro para a estrutura da pilha e o elemento que deve ser adicionado. Ele verifica se a pilha está cheia antes de adicionar o elemento. Se a pilha estiver cheia, ele imprime uma mensagem de erro.
4. Removendo elementos da pilha
Para remover um elemento da pilha, precisamos primeiro verificar se a pilha não está vazia. Em seguida, podemos simplesmente diminuir o valor do topo para remover o elemento. Aqui está uma função que faz isso:
int pop(Stack *stack) {
if (stack->top >= 0) {
int element = stack->array[stack->top];
stack->top--;
return element;
} else {
printf("Stack underflow\n");
return -1;
}
}
5. Usando a pilha
Aqui está um exemplo de como usar a pilha:
int main() {
Stack stack;
initStack(&stack, 5);
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("%d\n", pop(&stack));
printf("%d\n", pop(&stack));
printf("%d\n", pop(&stack));
return 0;
}
Neste exemplo, criamos uma pilha com tamanho máximo 5 e adicionamos três elementos usando a função "push". Em seguida, removemos os elementos da pilha usando a função "pop" e imprimimos seus valores. A saída esperada é:
3
2
1