CHALET'S

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