Lista de filmes

Lista de filmes

por Thiago Gomes -
Número de respostas: 12

Quando o enunciado diz  lista duplamente encadeada circular com cabeça, o circular significa que a última célula da lista aponta para cabeça, ou aponta para cabeça->prox?

Em resposta à Thiago Gomes

Re: Lista de filmes

por João Henrique Luciano -

Então, também estou com essa dúvida. Não sei a lista pode ser representada assim:

CABEÇA <-> X <-> ........  <-> CABEÇA

ou

CABEÇA <-> X <-> ........ <-> X

EDITADO: Tenho quase certeza que é a primeira opção, por conta da definição de lista circular: "a última célula aponta para a primeira". Como numa lista com cabeça a primeira célula é a cabeça, então deve ser o primeiro esquema.

Edit[2]: parando pra pensar, o segundo esquema é igual o primeiro hahaha

Em resposta à João Henrique Luciano

Re: Lista de filmes

por Thiago Gomes -

Então João, tbm tinha pensado nesses dois possíveis jeitos. Acho que de fato o primeiro é o mais ideal. Mas fico na dúvida se seria

CABEÇA <-> X <-> ....  <-> X.

Ou seria

CABEÇA <-> X <-> ... <-> CABEÇA?

 

 Pq a cabeça é santificada né?! Não pode ser tocada. 

Como vc disse realmente é a mesma coisa, mas isso muda como vou fazer a condição de parada no while para as funções que mostram a lista, pq em um caso seria quando fosse novamente a CABEÇA e no outro seria quando fosse X novamente né?

Em resposta à Thiago Gomes

Re: Lista de filmes

por João Henrique Luciano -

Meus argumentos:

1- Por definição, a cabeça é a primeira célula de uma lista, ainda que a única informação útil dela é o endereço da próxima célula (nessa caso, da próxima e da anterior);

2- Em uma lista circular (duplamente encadeada ou não), por definição, a última célula aponta para a primeira;

Conclusão: se a primeira célula é a cabeça e numa lista circular, a última célula aponta para a primeira, então a ultimacelula->prox=cabeca.

 

Quanto à condição de parada, não faria exatamente muita diferença: ao invés de parar, por exemplo, na célula cabeca, pararia em cabeca->prox, e depois você liberaria a cabeça à parte. Pelo menos eu acho.

Em resposta à Thiago Gomes

Re: Lista de filmes

por Bruno Sesso -

Segundo nossa amada wikipedia:

  • Lista duplamente encadeada circular: Neste modelo de lista possuimos apenas um sentinela. Esta lista é conhecida como circular pois o sentinela aponta para o primeiro elemento da lista e o último elemento da lista aponta para o sentinela, formando assim um círculo lógico.

o que me leva a concluir que:

último <-> cabeça <-> primeiro

Em resposta à Bruno Sesso

Re: Lista de filmes

por Lucas Silva -
Em resposta à Lucas Silva

Re: Lista de filmes

por João Henrique Luciano -

Então a cabeça aponta para a primeira, digamos, "célula efetiva" da lista? E essa "célula efetiva" aponta para a última célula?

Em resposta à Thiago Gomes

Re: Lista de filmes

por Edgar Bernardi Righi -

E aí pessoal? Tenho a mesma dúvida... 

No código temos 

lst->cab->ant  = lst->cab->prox = lst->cab;

Quando cria a cabeça, ou seja:

cabeça <-> cabeça <-> cabeça

Então pode-se concluir que ao inserir elemento1 temos:

... <-> elemento1 <-> cabeça <-> elemento1 <-> ...

Incluindo a cabeça na lista circular... Portanto o último estará ligado na cabeça e a cabeça estará ligada no último.