1.32k likes | 1.46k Vues
ESTRUTURA DE DADOS. Aula 10 – Listas Duplamente Encadeadas. Atenção aos Temas Principais dessa Aula. Conteúdo Programático desta aula. Compreender o conceito de Lista Duplamente Encadeada; Compreender opera ç ões com LDE sem ou com descritor;. Direto ao Assunto.
E N D
ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas
Conteúdo Programático desta aula • Compreender o conceito de Lista Duplamente Encadeada; • Compreender operações com LDE sem ou com descritor;
Nas listas duplamente ligadas, cada nó possui dois ponteiros, sendo que um aponta para o nó anterior e o outro, para o nó posterior. Sendo assim, a lista pode ser “percorrida” começando por qualquer extremidade. Um ponteiro ant aponta para o nó que precede enquanto que o ponteiro prox, aponta para o nó que o sucede.
Os algoritmos de algumas operações com LDE(listas ligadas) têm um certo grau de complexidade, mas facilitam na manipulação da LDE. A LDE é indicada quando precisarmos percorrer a lista do fim para o início.
Quando usamos LDE sem descritor, as funções básicas de inserção, remoção, busca, conta nós e impressão, quase não têm diferença para as LE exceto pelo ponteiro anterior. Não existe a necessidade de dimensionar o número de nós porque a alocação vai sendo feita de acordo com a necessidade.
Criar lista • Liberar lista • Verificar se a lista está vazia • Inserir na primeira posição • Inserir na última posição • Remover o primeiro elemento da lista • Remover o último elemento da lista • Remover um elemento por busca • Exibir lista do primeiro para o último nó • Exibir lista do último para o primeiro nó • Contar número de nós, etc. Algumas operações realizadas com uma LDE
Para entendimento das funções Definido a struct struct listaDE { int info; struct listaDE* ant; struct listaDE* prox; };
Para entendimento das funções Inicialização Definido a struct struct listaDE { int info; struct listaDE* ant; struct listaDE* prox; }; listaDE *lista= NULL;
insereInicio novo
insereInicio 23 novo
insereInicio LISTA 23 novo
insereInicio LISTA NULL 23 novo
insereInicio LISTA NULL 23 novo LISTA if
insereInicio LISTA NULL 23 novo lista = insere(lista, valor); LISTA
insereFim novo
insereFim 23 novo
insereFim NULL 23 novo
insereFim NULL LISTA 23 novo if
insereFim NULL LISTA 23 novo LISTA if
insereFim NULL 23 novo else LISTA aux
insereFim NULL 23 novo else LISTA novo aux
insereFim NULL aux 23 novo else LISTA novo aux
insereFim NULL aux 23 novo else LISTA novo aux lista = insere(lista, valor);
A REMOÇÃO DE UM NÓ - Um ponto crítico nas LDE p->ant->prox = p->prox; p->prox->ant = p->ant;
1) Através de seu ponteiro ant, p apontava para o nó anterior cuja representação é: p->ant. 2) Esse endereço foi copiado para o ponteiro ant do próximo nó acessado por p->prox->ant. (linha verde) 3) Sendo assim, após a remoção de p, p->prox ->ant apontará para o nó anterior ao que foi removido.(seta azul)
1) Através de seu ponteiro ant, p apontava para o nó anterior cuja representação é: p->ant. 2) Esse endereço foi copiado para o ponteiro ant do próximo nó acessado por p->prox->ant. (linha verde) 3) Sendo assim, após a remoção de p, p->prox ->ant apontará para o nó anterior ao que foi removido.(seta azul)
1) Através de seu ponteiroprox,papontava para o próximo nó cuja representação é:p->prox. 2) Esse endereço foi copiado para o ponteiro prox do nó anterior acessado porp->ant->prox. (linha verde) 3) Sendo assim, após a remoção de p,p->ant->proxapontará para o nó seguinte ao que foi removido.(seta azul)
1) Através de seu ponteiroprox,papontava para o próximo nó cuja representação é:p->prox. 2) Esse endereço foi copiado para o ponteiro prox do nó anterior acessado porp->ant->prox. (linha verde) 3) Sendo assim, após a remoção de p,p->ant->proxapontará para o nó seguinte ao que foi removido.(seta azul)