aula 225

Operação pop. Como desempilhar um nó da estrutura de dados pilha?

Dando continuidade ao estudo da estrutura de dados dinâmica do tipo pilha, vamos aprender nesta aula como fazer a operação pop. Como desempilhar um nó na estrutura de dados pilha?

Perceba que desempilhar, remover um elemento da pilha, significa alterar o topo da nossa pilha, ou seja, alterar o conteúdo de uma variável ponteiro que será declarada na função main.

Como vamos retornar o ponteiro para o nó que será removido, não podemos então retornar também o ponteiro para o novo topo. Assim, essa alteração precisa ser feita aqui dentro da nossa função. Para fazer isso, alterar o conteúdo de uma variável declarada em outra função / procedimento, precisamos receber o endereço dessa variável, como vimos no módulo sobre ponteiros. Isso implica em receber como parâmetro um ponteiro pra ponteiro, o endereço da variável declarada na função main que contém o endereço do topo da pilha, assim:

// assinatura da função desempilhar

No* desempilhar(No **topo)

Pode ser que a pilha esteja vazia, então o primeiro teste que faremos é este, verificar se o conteúdo da variável topo é diferente de NULL.

    // verificando se a pilha não está vazia

    if(*topo != NULL){
        printf("\nExiste ao menos 1 nó\n");
        ...
    }
    else
        printf("\nPilha vazia!\n");

Se a pilha não estiver vazia, vamos criar um ponteiro chamado remover que irá receber o endereço do topo da nossa pilha (o conteúdo da variável topo é o endereço do topo da pilha). Em seguida, precisamos alterar o topo (variável declarada na função main). O novo topo agora é o próximo do remover. Por fim, retornamos o ponteiro remover

Código completo em C para a operação pop em nossa estrutura de dados pilha

// função para desempilhar (operação pop) o nó do topo da pilha

No* desempilhar(No **topo){
    if(*topo != NULL){
        No *remover = *topo;
        *topo = remover->proximo;
        return remover;
    }
    else
        printf("\nPilha vazia!\n");
    return NULL;
}

Deixe um comentário

2 × dois =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.