Informática, perguntado por krlossantos, 4 meses atrás

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

Respondido por paulo114719
27

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 "}".


begonsi: O AVA afirma que essa resposta não é a correta.
begonsi: O AVA retornou como alternativa errada.
paulo114719: Veja se escolheu corretamente? As opções são muito parecidas.
paulo114719: Parte do código da semana 9 tirado do AVA:
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;
}
Respondido por DaiaraDyba
1

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

Anexos:
Perguntas interessantes