Assinale a alternativa que completa corretamente as linhas 54, 55, 56, 57 e 58 de código do método de remoção de dados (item_type stack::dequeue()) em uma fila implementada como lista encadeada:
50 item_type queue::dequeue() {
51 if (!is_empty()) {
52 node_type *pointer;
53 pointer = front;
54
55
56
57
58
59 delete pointer;
60 return item;
61 } else {
62 throw “Queue is empty!”;
63 }
64 }
54 item_type item = front->info;
55 front = front->next;
56 if (front == NULL) {
57 rear = NULL;
58 }
54 item_type item = front->info;
55 front = front->next;
56 if (rear == NULL) {
57 front = rear;
58 }
54 item_type item = front->info;
55 front = front->next;
56 if (front = NULL) {
57 rear = NULL;
58 }
54 item_type item = front->info;
55 front = front->next;
56 if (front != NULL) {
57 rear = NULL;
58 }
54 front = front->next;
55 item_type item = front->info;
56 if (front == NULL) {
57 rear = NULL;
58 }
Soluções para a tarefa
Resposta:
54 item_type item = front->info;
55 front = front->next;
56 if (front == NULL) {
57 rear = NULL;
58 }
Explicação:
Esse exemplo está nos arquivos fonte mas de outra forma, onde é usado a construção abaixo:
if (front == NULL)
rear = NULL;
Quando se tem apenas uma instrução após um IF não é necessário o uso de "{" e "}".
ItemType item = front->info;
front = front->next;
if (front == NULL)
rear = NULL;
A diferença para a questão em si é o Item_type e a colocaram chaves no if que é:
if (front == NULL){
rear = NULL;
}
As linhas que completam o código estão na Alternativa A.
54 item_type item = front->info;
55 front = front->next;
56 if (front == NULL) {
57 rear = NULL;
58 }
O que é uma lista encadeada?
A lista encadeada, também chamada de lista ligada, é uma estrutura semelhante a uma corrente em que suas estruturas estão ligadas entre si sequencialmente.
Em uma lista encadeada:
- Acessamos a lista através de um ponteiro para a primeira estrutura (cabeça ou front).
- Cada estrutura contém um ponteiro para a estrutura seguinte.
- O ponteiro da última estrutura tem valor prox NULL, indicando que a estrutura chegou ao fim.
Normalmente em uma lista encadeada, para cada novo elemento uma nova memória é alocada dinamicamente.
Ou seja, o espaço total de memória gasto pela estrutura é proporcional ao número de elementos que ela contém.
Em uma lista, cada elemento da estrutura contém:
- Um dado
- Uma referência (prox) para o próximo elemento.
Como completar o código do enunciado?
Queremos remover o primeiro item da fila implementada como lista (front).
A linha 51 verifica se a estrutura está vazia.
Caso não esteja, entramos na linha 52 e 53 que inicializam um ponteiro (pointer) e fazem ele apontar para o front.
Na sequência, na linha 54 devemos fazer com que a variável item receba a informação do front.
Ou seja, queremos que item receba o valor do primeiro item da fila.
- 54 item_type item = front->info;
Na linha 55 devemos fazer com que o ponteiro front aponte para o próximo item da estrutura. Ou seja, o segundo item irá se tornar o primeiro item da fila.
- 55 front = front->next;
Por fim, devemos verificar se a estrutura não chegou ao fim após a ultima operação.
Fazemos isso avaliando se o ponteiro front (que recebeu o próximo item da lista na linha 55) está vazio. Caso esteja, devemos fazer com que o fim da lista (rear) receba NULL também.
- 56 if (front == NULL) {
- 57 rear = NULL;
- 58 }
Portanto, a alternativa correta é a Alternativa A.
Saiba mais sobre Listas Encadeadas em:
https://brainly.com.br/tarefa/43248947
#SPJ2