Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>Listas encadeadas duplas</p><p>Apresentação</p><p>Uma lista encadeada dupla é um tipo de lista dinâmica cujos elementos têm dois apontamentos: um</p><p>para o elemento anterior e outro para o posterior. Por meio do encadeamento duplo, é possível</p><p>percorrer uma lista em ambos os sentidos — isto é, da esquerda para a direita e vice-versa —</p><p>proporcionando mais versatilidade na navegação dos seus elementos. As operações em uma lista</p><p>com encadeamento duplo são as mesmas das listas simplesmente encadeadas, com pequenas</p><p>variações nos apontamentos existentes.</p><p>Nesta Unidade de Aprendizagem, você vai estudar sobre o uso, a navegação e as operações com</p><p>listas encadeadas duplas.</p><p>Bons estudos.</p><p>Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:</p><p>Identificar o uso de uma lista encadeada dupla.•</p><p>Reconhecer a navegação em uma lista encadeada dupla para inserir, remover, atualizar e</p><p>consultar valores.</p><p>•</p><p>Aplicar a implementação de listas encadeadas duplas.•</p><p>Laiane</p><p>Desafio</p><p>Uma lista dinâmica com encadeamento duplo é um conjunto de elementos ligados em sequência,</p><p>no qual os elementos estão encadeados de modo que cada um aponte para o próximo e para o</p><p>anterior, formando, assim, uma cadeia de dois sentidos.</p><p>Nesse tipo de lista, o anterior do primeiro elemento e o posterior do último apontam para NULL,</p><p>indicando o início e o final da lista, respectivamente. Diversas operações podem ser implementadas,</p><p>sendo as mais comuns: a inclusão, a exclusão e a impressão.</p><p>Com base nisso, sua tarefa, neste desafio, é declarar uma lista dinâmica duplamente encadeada e</p><p>implementar os seguintes métodos na linguagem C:</p><p>- Inicializar a lista;</p><p>- Inserir elemento no início;</p><p>- Inserir elemento no final;</p><p>- Excluir elemento do meio da lista;</p><p>- Imprimir a lista nos dois sentidos;</p><p>- Excluir toda a lista.</p><p>Use como base da lista uma estrutura com os seguintes atributos: nome, nota e turma, conforme</p><p>segue:</p><p>typedef struct {</p><p>char nome[20];</p><p>float nota;</p><p>int turma;</p><p>} Aluno;</p><p>Após implementar a lista e os métodos, faça algumas operações de inserção e exclusão para testar</p><p>as funcionalidades do exercício e apresente o resultado da tela. O principal método desse exercício</p><p>é o que exclui elementos do meio da lista, sendo que os outros servirão de apoio para o</p><p>desenvolvimento deste.</p><p>Infográfico</p><p>Listas são estruturas bastante utilizadas em sistemas computacionais, sendo que diversos dados</p><p>podem ser apresentados em listas, como a relação de alunos de uma escola, por exemplo. Entre os</p><p>tipos de listas que existem na estrutura de dados, a lista com encadeamento duplo destaca-se por</p><p>não definir uma quantidade limitada de itens na sua criação e por otimizar a memória do</p><p>dispositivo, alocando apenas o espaço necessário para acomodar os elementos, bem como ter a</p><p>capacidade de incluir e excluir itens de qualquer posição, podendo realizar a navegação em ambos</p><p>os sentidos.</p><p>Laiane</p><p>Conteúdo do livro</p><p>Listas encadeadas duplas são estruturas cujos itens estão dispostos em sequência, como uma</p><p>cadeia de elementos. Nesse tipo de lista, os elementos devem ser ligados por meio de dois</p><p>apontamentos, isto é, um que aponta para o elemento anterior e outro para o elemento posterior,</p><p>possibilitando navegar em ambos os sentidos da lista. Diversas operações podem ser implementas</p><p>em listas duplamente encadeadas, permitindo, assim, seu uso em inúmeros domínios de aplicação</p><p>na disciplina Estrutura de Dados.</p><p>Na obra Estrutura de dados, leia o capítulo Listas encadeadas duplas, base teórica desta Unidade de</p><p>Aprendizagem, onde você vai estudar sobre o uso, a navegação e as operações com listas dinâmicas</p><p>duplamente encadeadas.</p><p>Boa leitura.</p><p>Laiane</p><p>Laiane</p><p>ESTRUTURA</p><p>DE DADOS</p><p>Mauricio Saraiva</p><p>Listas encadeadas duplas</p><p>Objetivos de aprendizagem</p><p>Ao final deste texto, você deve apresentar os seguintes aprendizados:</p><p> Identificar o uso de uma lista encadeada dupla.</p><p> Reconhecer a navegação em uma lista encadeada dupla para inserir,</p><p>remover, atualizar e consultar valores.</p><p> Aplicar a implementação de listas encadeadas duplas.</p><p>Introdução</p><p>Uma lista encadeada dupla é um tipo de lista dinâmica em que os ele-</p><p>mentos têm dois apontamentos: um para o elemento anterior e outro para</p><p>o elemento posterior. Com o encadeamento duplo, é possível percorrer</p><p>uma lista em ambos os sentidos, isto é, da esquerda para a direita e vice-</p><p>-versa, proporcionando mais versatilidade na navegação dos elementos</p><p>da lista. As operações em uma lista com encadeamento duplo são as</p><p>mesmas das listas simplesmente encadeadas, com pequenas variações</p><p>nos apontamentos existentes.</p><p>Neste capítulo, você vai estudar sobre o uso, a navegação e as ope-</p><p>rações com listas encadeadas duplas.</p><p>Lista encadeada dupla</p><p>Assim como uma lista encadeada simples, uma lista encadeada dupla é uma</p><p>relação de elementos ligados como uma sequência de itens. No entanto, no</p><p>encadeamento duplo, os elementos têm dois apontamentos, isto é, um para o</p><p>elemento anterior e outro para o posterior (EDELWEISS; GALANTE, 2009).</p><p>O primeiro e o último elementos da lista têm apenas um apontamento para</p><p>outros elementos, sendo que o anterior do primeiro e o posterior ao último</p><p>apontam para NULL, indicando o início e o final da lista, respectivamente,</p><p>como ilustrado a Figura 1.</p><p>Laiane</p><p>Laiane</p><p>Figura 1. Apresentação de uma lista encadeada dupla.</p><p>a pe1 a pe3 a pe3</p><p>De acordo com Celes, Cerqueira e Rangel (2004), uma lista dinâmica com</p><p>encadeamento duplo apresenta as seguintes características:</p><p> Define um ponteiro para o primeiro elemento e outro para o último</p><p>elemento da lista. Esses ponteiros servem como ponto de referência</p><p>da lista e permitirão que ela seja percorrida, tanto a partir do início,</p><p>quanto do final.</p><p> Cada elemento da lista tem dois atributos, do tipo ponteiro da lista, que</p><p>apontam para os elementos anterior e posterior.</p><p> O anterior ao primeiro elemento aponta para null, indicando que a lista</p><p>inicia a partir desse elemento.</p><p> O posterior ao último elemento da lista aponta para null, indicando que</p><p>a lista termina nesse elemento.</p><p> Os elementos da lista podem ser variáveis de um tipo de dado primitivo</p><p>ou estruturas compostas por outras variáveis, como registros.</p><p>Na linguagem C, a declaração de uma lista duplamente encadeada pode</p><p>ser implementada com duas estruturas. A primeira especifica os detalhes do</p><p>que será armazenado como um registro, isto é, os atributos que compõem esse</p><p>conjunto de dados; e a segunda define propriamente a lista, ou seja, os dados</p><p>que serão armazenados e os ponteiros que indicam os elementos anterior e</p><p>posterior (LORENZI; MATTOS; CARVALHO, 2007).</p><p>Pode-se, ainda, declarar uma terceira estrutura para armazenar a quantidade</p><p>de elementos da lista, bem como o endereço de memória do primeiro e do</p><p>último elemento da lista. Essa estrutura é chamada de Descritor por Edelweiss</p><p>e Galante (2009) e serve de apoio para manipular a lista nos dois sentidos,</p><p>como, por exemplo, imprimir os elementos de trás para frente.</p><p>Listas encadeadas duplas2</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Para exemplificar a declaração de uma lista dinâmica com encadeamento</p><p>duplo, tomamos por base o cadastro de alunos de uma escola. Esse cadastro</p><p>é composto por três atributos: nome, nota e turma.</p><p>A estrutura declarada nada mais é que a definição de um conjunto capaz</p><p>de armazenar os dados dos alunos. Entretanto, para declarar a lista, é preciso</p><p>definir uma estrutura que armazene um dado de Aluno e dois ponteiros, os</p><p>quais serão utilizados para fazer a ligação dos elementos:</p><p>Nessa estrutura, a variável dado é do tipo Aluno, isto é, armazena os atri-</p><p>butos dos alunos, como nome, nota e turma. Além disso, define as variáveis</p><p>*ant e *prox, como ponteiros para a mesma estrutura, que visam a armazenar</p><p>o endereço do anterior e do próximo elemento da lista.</p><p>A estrutura Descritor contém três variáveis, sendo uma do tipo inteiro</p><p>que armazena a quantidade de elementos da lista e duas do tipo ponteiro de</p><p>Nodo, que armazenam os endereços de memória do primeiro e do último</p><p>elemento da lista.</p><p>3Listas encadeadas duplas</p><p>Por ser uma lista dinâmica, a alocação e a liberação de memória ocorrem</p><p>em tempo de execução. Assim, a lista ocupa apenas o espaço necessário para</p><p>acomodar os elementos atuais, tornando-se uma ótima opção para os casos</p><p>em que não se sabe exatamente o tamanho da lista.</p><p>Uma vez que as estruturas estejam definidas, é preciso declarar as variáveis</p><p>que serão usadas para montar a lista. Para isso, declaramos uma variável do</p><p>tipo Aluno, uma variável do tipo Descritor e uma variável que representa a</p><p>lista, do tipo Nodo.</p><p>É preciso alocar memória para cada elemento a ser incluído na lista.</p><p>Na linguagem C, a instrução malloc realiza essa alocação com base no tamanho</p><p>da estrutura Nodo que, além de armazenar os dados do Aluno, armazena os</p><p>endereços dos nodos anterior e posterior.</p><p>Navegação em uma lista encadeada dupla para</p><p>inserir, remover, atualizar e consultar valores</p><p>Navegar em uma lista</p><p>A navegação em uma lista encadeada dupla pode ser realizada de duas for-</p><p>mas. A primeira e mais usual é a varredura a partir de seu início, por meio</p><p>do endereço do primeiro elemento. Já a segunda maneira varre a lista de trás</p><p>para frente, partindo do endereço do último elemento, cujo endereço está</p><p>armazenado no Descritor (EDELWEISS; GALANTE, 2009).</p><p>Ambas as formas precisam de uma estrutura de repetição, a qual fará a</p><p>navegação na lista pelos ponteiros que endereçam para os elementos anterior</p><p>e posterior de cada item da lista, fazendo com que seja possível percorrê-la</p><p>em qualquer sentido, conforme ilustra a Figura 2.</p><p>Listas encadeadas duplas4</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Figura 2. Navegação em uma lista duplamente encadeada.</p><p>&ant&ant</p><p>&prox &prox &prox &prox</p><p>&ant &ant</p><p>e1</p><p>&e1 &e4</p><p>e2 e3 e4</p><p>n = 4</p><p>Descritor</p><p>Aluno</p><p>nome</p><p>nota</p><p>turma</p><p>Incluir elemento na lista</p><p>A inclusão de elementos em uma lista duplamente encadeada pode ser rea-</p><p>lizada de três formas: no início, em uma posição intermediária e no fi nal da</p><p>lista. Em cada uma dessas opções é preciso reajustar os apontamentos, de</p><p>modo que os elementos se liguem aos anteriores e posteriores (EDELWEISS;</p><p>GALANTE, 2009).</p><p>Para incluir um elemento na lista, é necessário alocar memória para receber</p><p>os dados do registro que serão armazenados na estrutura. Na sequência, deve-</p><p>-se redirecionar o ponteiro ant do novo elemento para o elemento anterior e</p><p>o ponteiro prox para o próximo elemento, cuidando para que o anterior do</p><p>primeiro elemento e o posterior do último apontem para NULL, indicando o</p><p>início e o final da lista, respectivamente (Figura 3).</p><p>5Listas encadeadas duplas</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Figura 3. Inclusão em uma lista duplamente encadeada.</p><p>a pe1 a pe3 a pe3</p><p>a</p><p>a</p><p>p</p><p>p</p><p>e1</p><p>e4</p><p>a pe3 a pe3</p><p>Excluir elemento da lista</p><p>Assim como na inclusão, a exclusão de elementos de uma lista encadeada dupla</p><p>pode ser realizada de três formas: no início, em uma posição intermediária e</p><p>no fi nal da lista. Em cada uma dessas opções, é necessário reajustar os apon-</p><p>tamentos, de modo que os elementos se liguem aos anteriores e posteriores</p><p>(CELES; CERQUEIRA; RANGEL, 2004).</p><p>Para excluir um elemento na lista, é preciso liberar a memória que estava</p><p>alocada para guardar os dados do registro, bem como cuidar para que o anterior</p><p>do primeiro elemento e o posterior do último apontem para NULL quando a</p><p>exclusão envolver o início ou o final da lista (Figura 4).</p><p>Listas encadeadas duplas6</p><p>Laiane</p><p>Laiane</p><p>Figura 4. Exclusão em uma lista duplamente encadeada.</p><p>a</p><p>a</p><p>p</p><p>p</p><p>e1</p><p>e4</p><p>a pe3</p><p>a</p><p>a</p><p>p</p><p>p</p><p>e1</p><p>e4</p><p>a pe3</p><p>a p</p><p>Consultar e atualizar elementos da lista</p><p>A consulta e a atualização de elementos em uma lista duplamente encadeada</p><p>são realizadas a partir da navegação nos itens da lista. Isso é necessário porque</p><p>a lista não tem um índice que acesse diretamente seus elementos, exceto o</p><p>primeiro e o último (LORENZI; MATTOS; CARVALHO, 2007).</p><p>Como citado anteriormente, a navegação pode ser realizada por meio de</p><p>uma estrutura de repetição. Dessa forma, as comparações podem ser realizadas,</p><p>ao percorrer a lista, visando a encontrar um determinado elemento que pode</p><p>ser apenas apresentado na tela ou até mesmo modificado.</p><p>Essas operações não requerem modificação nos ponteiros que ligam os</p><p>elementos, uma vez que apenas efetuam leitura ou atualização do conteúdo</p><p>dos itens, isto é, dos dados. Com isso, permanece a mesma quantidade de</p><p>elementos e seus respectivos apontamentos.</p><p>7Listas encadeadas duplas</p><p>Laiane</p><p>Laiane</p><p>Implementação de listas encadeadas duplas</p><p>Nesta seção, vamos apresentar a implementação de uma lista duplamente</p><p>encadeada na linguagem C, tomando por base as estruturas apresentadas</p><p>anteriormente. Assim, serão demonstradas as principais operações, como</p><p>iniciar uma lista, verifi car se uma lista está vazia, retornar o primeiro e o último</p><p>elementos, incluir e excluir elementos no início e no fi nal de uma lista, excluir</p><p>uma lista inteira e imprimir a relação completa de elementos de uma lista.</p><p>Iniciar uma lista</p><p>É preciso iniciar uma lista antes de utilizá-la pela primeira vez. Nessa função,</p><p>inicializam-se as variáveis Ponteiros e a quantidade de elementos do Descritor.</p><p>Verificar se a lista está vazia</p><p>Uma lista dinâmica está vazia se ela aponta para NULL ou se a quantidade de</p><p>elementos do Descritor for igual a zero. Isso signifi ca que nenhum elemento</p><p>foi inserido ou que todos já foram excluídos. A função que identifi ca se uma</p><p>lista está vazia está descrita a seguir.</p><p>Listas encadeadas duplas8</p><p>Laiane</p><p>Laiane</p><p>Laiane</p><p>Acessar o primeiro e o último elementos da lista</p><p>Para acessar o primeiro ou o último elemento da lista, devem-se usar os</p><p>ponteiros do Descritor, os quais têm apontamentos para esses elementos,</p><p>conforme apresentado a seguir.</p><p>Incluir elemento na lista</p><p>Nesta seção, vamos apresentar a inclusão no início e no fi nal da lista. Para</p><p>isso, verifi camos se a lista está vazia para identifi car a forma correta de incluir,</p><p>pois a regra é diferente quando já existem elementos na lista. Além disso,</p><p>devem-se ajustar os apontamentos dos ponteiros do novo elemento na lista,</p><p>conforme apresentado anteriormente.</p><p>9Listas encadeadas duplas</p><p>Laiane</p><p>Laiane</p><p>Excluir elemento da lista</p><p>Assim como na inclusão, vamos apresentar as funções que excluem no início</p><p>e no fi nal da lista. Para isso, deve-se diminuir a quantidade de elementos do</p><p>Descritor, bem como liberar a memória do elemento excluído sem deixar de</p><p>ajustar os apontamentos.</p><p>Listas encadeadas duplas10</p><p>Laiane</p><p>Excluir toda a lista</p><p>Para excluir toda a lista, é preciso realizar a navegação desde o início e liberar</p><p>a memória de cada elemento, diminuindo o contador do Descritor.</p><p>11Listas encadeadas duplas</p><p>Laiane</p><p>Imprimir toda a lista</p><p>Há duas formas de imprimir toda a relação de elementos de uma lista dinâmica</p><p>com duplo encadeamento. A primeira é percorrê-la da esquerda para a direita</p><p>ou do início até o fi nal, e a segunda é da direita para a esquerda ou do fi nal</p><p>até o início.</p><p>A função imprimir pode ser personalizada para filtrar dados e apresentar</p><p>apenas determinados registros. Para isso, uma estrutura condicional precisa</p><p>ser implementada para verificar se os registros pesquisados atendem aos cri-</p><p>térios especificados. A condição de parada do laço de repetição se dá quando</p><p>o ponteiro do final ou do início da lista aponta para NULL.</p><p>Listas encadeadas duplas12</p><p>Laiane</p><p>CELES, W.; CERQUEIRA, R.; RANGEL, J. L. Introdução a estrutura de dados: com técnicas</p><p>de programação em C. Rio de Janeiro: Campus, 2004. 294 p.</p><p>EDELWEISS, N.; GALANTE, R. Estrutura de dados. Porto Alegre: Bookman, 2009. 262 p.</p><p>(Série Livros Didáticos Informática UFRGS, 18).</p><p>LORENZI, F.; MATTOS, P.; CARVALHO, T. Estruturas de dados. São Paulo: Cengage Le-</p><p>arning, 2007. 200 p.</p><p>Leitura recomendada</p><p>FORBELLONE, A. L. V.; EBERSPÁCHER, H. F. Lógica de programação: a construção de</p><p>algoritmos e estruturas de dados. 3 ed. São Paulo, Pearson, 2005. 232 p.</p><p>13Listas</p><p>encadeadas duplas</p><p>Encerra aqui o trecho do livro disponibilizado para</p><p>esta Unidade de Aprendizagem. Na Biblioteca Virtual</p><p>da Instituição, você encontra a obra na íntegra.</p><p>Conteúdo:</p><p>Dica do professor</p><p>Uma lista encadeada dupla é uma relação de elementos que inclui ou exclui itens dinamicamente,</p><p>conforme a necessidade da aplicação. Esses elementos são ligados por meio de dois apontamentos:</p><p>um que se relaciona com o elemento anterior e outro com o posterior, permitindo que a lista seja</p><p>navegada em ambos os sentidos.</p><p>Assista ao seguinte vídeo para conhecer os principais recursos de listas encadeadas duplas.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/0dac3f731b916183767259762d4376d2</p><p>Exercícios</p><p>1) Listas encadeadas duplas são estruturas com características específicas. Baseando-se no</p><p>conceito de lista encadeada dupla, marque a alternativa correta:</p><p>A) O último elemento da lista aponta para o primeiro, formando uma lista circular, sem início e</p><p>fim.</p><p>B) Os elementos da lista devem ser estruturas compostas, como registros.</p><p>C) A inclusão de elementos deve ocorrer em uma posição que esteja vazia.</p><p>D) O número máximo de elementos a ser incluído é obrigatoriamente definido no momento de</p><p>sua criação.</p><p>E) Cada elemento apresenta dois atributos do tipo ponteiro da lista, usados para referenciar o</p><p>elemento anterior e próximo.</p><p>2) O duplo encadeamento em listas permite que façamos operações onde a navegação é feita</p><p>nos dois sentidos, como em um reprodutor de música. Em relação às listas com</p><p>encadeamento duplo, leia as alternativas a seguir e indique a correta:</p><p>A) Cada elemento aponta apenas para o endereço seguinte.</p><p>B) Podem acessar diretamente a posição de um elemento da lista.</p><p>C) Devem ser percorridas da esquerda para a direita.</p><p>D) Alocam a memória necessária para armazenar todos os elementos da lista na sua declaração.</p><p>E) Alocam apenas a memória necessária para armazenar os elementos atuais da lista.</p><p>3) Cada estrutura de dados apresenta métodos diferentes para a inserção e exclusão de</p><p>elementos. Baseando-se no conceito de lista encadeada dupla.</p><p>Marque a alternativa correta em relação à inclusão de elementos:</p><p>A) A inclusão de elementos deve ocorrer em uma posição que esteja vazia.</p><p>Laiane</p><p>Laiane</p><p>Em uma lista encadeada dupla, cada elemento tem dois atributos do tipo ponteiro da lista. O anterior ao primeiro elemento e o posterior ao último apontam para NULL. Os elementos da lista não precisam necessariamente ser estruturas compostas, podendo também ser tipos primitivos. Deve, ainda, permitir a inclusão em qualquer posição da lista, e não apresenta um limite máximo de itens, pois a alocação é feita em tempo de execução.</p><p>Laiane</p><p>Em uma lista dinâmica com encadeamento duplo, cada elemento aponta para o elemento anterior e posterior da cadeia, cuja pesquisa é sequencial e pode ter ambos os sentidos, não permitindo acesso direto a determinado elemento sem ter que navegar na lista. Por ser dinâmica, alocando apenas a memória necessária para armazenar os elementos atuais da lista. ​​​​​​​</p><p>Laiane</p><p>B) A inclusão de elementos deve ocorrer no início da lista.</p><p>C) A inclusão de elementos deve ocorrer no final da lista.</p><p>D) O número máximo de elementos a serem incluídos é definido no momento de sua criação.</p><p>E) A inclusão de elementos pode ocorrer em qualquer posição da lista.</p><p>4) Listas duplamente encadeadas se diferenciam de outros tipos de lista por causa de algumas</p><p>características específicas. Sobre lista duplamente encadeada.</p><p>Marque a alternativa correta em relação às suas características:</p><p>A) O primeiro elemento aponta para NULL, para indicar o início da lista.</p><p>B) O último elemento aponta para NULL, para indicar o final da lista.</p><p>C) A inclusão deve ser realizada no final da lista.</p><p>D) A lista é dividida em duas quando se exclui um elemento do meio.</p><p>E) Os elementos podem conter variáveis de um tipo primitivo ou estruturas compostas.</p><p>Para cada tipo de manipulação de itens em uma lista encadeada dupla, nós precisamos</p><p>desenvolver diferentes métodos, por exemplo para inclusão e exclusão de elementos.</p><p>Analise o seguinte método e marque a alternativa que representa o seu significado:</p><p>struct Node{</p><p>int numero;</p><p>struct Node *ant;</p><p>struct Node *prox;</p><p>};</p><p>typedef struct Node node;</p><p>struct Descritor{</p><p>int n;</p><p>struct Node *prim;</p><p>5)</p><p>Laiane</p><p>Laiane</p><p>Uma lista encadeada dupla deve permitir a inclusão em qualquer posição da lista, que fará a nova ligação para manter a lista encadeada, e não tem um limite máximo de itens, pois a alocação é feita em tempo de execução, sendo o limite o tamanho da memória disponível no equipamento.</p><p>Laiane</p><p>Em uma lista duplamente encadeada, os elementos podem conter variáveis de um tipo primitivo ou estruturas compostas, sendo que o anterior do primeiro elemento e o posterior do último apontam para NULL, para indicar o início e o final da lista. A inclusão pode ser realizada em qualquer ponto da lista, e a exclusão de um elemento não a divide em duas.</p><p>Laiane</p><p>O método apresentado recebe o endereço do último elemento e do penúltimo. Na sequência, faz o descritor apontar o final da lista para o penúltimo elemento e o próximo dele para NULL. Portanto, exclui o último elemento da lista.</p><p>Laiane</p><p>struct Node *ult;</p><p>};</p><p>typedef struct Descritor descritor;</p><p>void metodo(descritor *desc, node *list) {</p><p>node *u= desc->ult;</p><p>node *p= u->ant;</p><p>p->prox= NULL;</p><p>desc->ult= p;</p><p>free(u);</p><p>desc->n--;</p><p>}</p><p>A) Remove o primeiro elemento da lista.</p><p>B) Adiciona um elemento no início da lista.</p><p>C) Adiciona um elemento no meio da lista.</p><p>D) Adiciona um elemento no final da lista.</p><p>E) Remove o último elemento da lista.</p><p>Laiane</p><p>Na prática</p><p>Listas com encadeamento duplo permitem que os elementos sejam percorridos em ambos os</p><p>sentidos, isto é, do início para frente e do final para o início. Diversas operações podem ser</p><p>realizadas com listas dinâmicas duplamente encadeadas, como, por exemplo, incluir elementos no</p><p>início e no final da lista.</p><p>No entanto, em alguns casos, pode ser necessário incluir elementos no meio da lista, em</p><p>determinada posição que pode ser indicada pelo conteúdo de algum elemento, como um nome de</p><p>aluno, por exemplo.</p><p>Nesse sentido, para demonstrar como inserir elementos no meio de uma lista com encadeamento</p><p>duplo, que tal ver um programa em C, que inclui elementos em uma posição intermediária da lista?</p><p>Aponte a câmera para o</p><p>código e acesse o link do</p><p>conteúdo ou clique no</p><p>código para acessar.</p><p>https://statics-marketplace.plataforma.grupoa.education/sagah/def32cda-0d9f-4fa6-a6bc-025515bb74ed/73423146-a5e2-4b52-886e-398f70cb08d2.jpg</p><p>Saiba +</p><p>Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:</p><p>Lista dinâmica duplamente encadeada</p><p>Saiba mais sobre a definição de uma lista duplamente encadeada.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Implementando lista dinâmica duplamente encadeada</p><p>Conheça mais sobre a implementação de uma lista duplamente encadeada.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Inserção na lista duplamente encadeada</p><p>Veja mais sobre a inserção em uma lista duplamente encadeada.</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>Remoção na lista duplamente encadeada</p><p>Conheça mais sobre exclusão em uma lista duplamente encadeada.</p><p>https://www.youtube.com/embed/pWh_nJ66Rrk</p><p>https://www.youtube.com/embed/QU0TponoeZ0</p><p>https://www.youtube.com/embed/cC-UWJssr30</p><p>Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.</p><p>https://www.youtube.com/embed/30097hte7ys</p>

Mais conteúdos dessa disciplina