ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
Transcript of ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
![Page 1: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/1.jpg)
ESTRUTURA DE DADOS
Aula 10 – Listas Duplamente Encadeadas
![Page 2: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/2.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Atenção aos Temas Principais dessa Aula
![Page 3: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/3.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Conteúdo Programático desta aula
Compreender o conceito de Lista Duplamente
Encadeada;
Compreender operações com LDE sem ou com
descritor;
Compreender o conceito de Lista Duplamente
Encadeada;
Compreender operações com LDE sem ou com
descritor;
![Page 4: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/4.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Direto ao Assunto
![Page 5: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/5.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 6: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/6.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
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.
![Page 7: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/7.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
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.
![Page 8: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/8.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
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.
![Page 9: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/9.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Criar listaLiberar listaVerificar se a lista está vaziaInserir na primeira posiçãoInserir na última posiçãoRemover o primeiro elemento da listaRemover o último elemento da listaRemover um elemento por buscaExibir 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
![Page 10: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/10.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 11: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/11.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
struct listaDE { int info; struct listaDE* ant; struct listaDE* prox;};
Definido a struct
Para entendimento das funções
![Page 12: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/12.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Inicialização
listaDE *lista= NULL;
Definido a struct
Para entendimento das funções
struct listaDE { int info; struct listaDE* ant; struct listaDE* prox;};
![Page 13: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/13.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 14: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/14.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 15: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/15.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
![Page 16: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/16.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
2323
![Page 17: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/17.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
2323 LISTALISTA
![Page 18: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/18.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
NULLNULL 2323 LISTALISTA
![Page 19: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/19.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
NULLNULL 2323 LISTALISTA
LISTALISTA
ifif
![Page 20: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/20.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
novonovo
NULLNULL 2323 LISTALISTA
LISTALISTAlista = insere(lista, valor);
![Page 21: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/21.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
![Page 22: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/22.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
![Page 23: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/23.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
2323
![Page 24: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/24.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323
![Page 25: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/25.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323LISTALISTA
ifif
![Page 26: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/26.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323LISTALISTA
LISTALISTA
ifif
![Page 27: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/27.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323
auxaux
LISTALISTAelseelse
![Page 28: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/28.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323
auxaux
LISTALISTA
novonovo
elseelse
![Page 29: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/29.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323auxaux
auxaux
LISTALISTA
novonovo
elseelse
![Page 30: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/30.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
novonovo
NULLNULL2323auxaux
auxaux
LISTALISTA
novonovo
elseelse
lista = insere(lista, valor);
![Page 31: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/31.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
![Page 32: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/32.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
exibeIpF
![Page 33: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/33.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
exibeIpF
![Page 34: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/34.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
exibeFpI
![Page 35: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/35.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
exibeFpI
![Page 36: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/36.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
contaNós
![Page 37: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/37.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
contaNós
![Page 38: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/38.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
busca
![Page 39: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/39.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
remove
![Page 40: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/40.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
remove
![Page 41: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/41.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
remove
![Page 42: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/42.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
A REMOÇÃO DE UM NÓ - Um ponto crítico nas LDE
p->ant->prox = p->prox;p->prox->ant = p->ant;
![Page 43: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/43.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 44: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/44.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 45: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/45.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
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)
![Page 46: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/46.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
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)
![Page 47: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/47.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 48: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/48.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 49: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/49.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
1) Através de seu ponteiro prox, p apontava para o próximo nó cuja representação é: p->prox. 2) Esse endereço foi copiado para o ponteiro prox do nó anterior acessado por p->ant->prox. (linha verde) 3) Sendo assim, após a remoção de p, p->ant->prox apontará para o nó seguinte ao que foi removido.(seta azul)
![Page 50: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/50.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
1) Através de seu ponteiro prox, p apontava para o próximo nó cuja representação é: p->prox. 2) Esse endereço foi copiado para o ponteiro prox do nó anterior acessado por p->ant->prox. (linha verde) 3) Sendo assim, após a remoção de p, p->ant->prox apontará para o nó seguinte ao que foi removido.(seta azul)
![Page 51: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/51.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 52: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/52.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
O nó descritor é criado para fazer referências ao primeiro e/ou ao ultimo nó. Por essa razão, seu uso facilita o acesso aos nós da lista. Seja para inserir, no início ou no fim, remover, do início ou do fim, etc.
Como o nó descritor pode conter, também, outras informações, optei por ter o total de nós da lista.
A única preocupação fica em ter que atualizá-lo na inserção e na remoção de um nó na lista, uma vez que o acesso a um nó da lista será feito através dele.
DESCRITOR
![Page 53: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/53.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
struct listaDE { int info; struct listaDE* ant; struct listaDE* prox;};
1) Definindo a struct
![Page 54: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/54.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
struct DE{ int tam; listaDE* prim; listaDE* ult;};
2) Definindo a struct
![Page 55: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/55.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
DE *ptrDesc=new DE; ptrDesc->prim=NULL; ptrDesc->ult=NULL; ptrDesc->tam=0;
3) Inicialização
NULLNULL NULLNULL00
![Page 56: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/56.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
![Page 57: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/57.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
![Page 58: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/58.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
2323
![Page 59: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/59.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
2323
ptrDescptrDesc
![Page 60: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/60.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
![Page 61: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/61.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
+=1+=1
![Page 62: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/62.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
+=1+=1NULL ?NULL ?
ifif
![Page 63: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/63.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
+=1+=1
ifif
![Page 64: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/64.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
+=1+=1
elseelse
![Page 65: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/65.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
ptAuxptAux
NULLNULL 2323
ptrDescptrDesc
+=1+=1
![Page 66: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/66.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereInicio
![Page 67: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/67.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
![Page 68: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/68.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
2323
![Page 69: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/69.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
NULLNULL2323
![Page 70: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/70.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
ptrDescptrDesc
NULLNULL2323
+=1+=1
![Page 71: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/71.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
ptrDescptrDesc
NULLNULL2323
+=1+=1
ifif
![Page 72: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/72.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
ptrDescptrDesc
NULLNULL2323
+=1+=1
ifif
![Page 73: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/73.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
ptrDescptrDesc
NULLNULL2323
+=1+=1
ifif
![Page 74: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/74.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptAuxptAux
ptrDescptrDesc
NULLNULL2323
+=1+=1
ifif
NULLNULL
![Page 75: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/75.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptUltptUltptrDescptrDesc
+=1+=1
elseelse
ptAuxptAux
NULLNULL2323
![Page 76: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/76.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptUltptUltptrDescptrDesc
+=1+=1
elseelse
ptAuxptAux
NULLNULL2323
![Page 77: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/77.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptUltptUltptrDescptrDesc
+=1+=1
elseelse
ptAuxptAux
NULLNULL2323
![Page 78: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/78.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptUltptUltptrDescptrDesc
+=1+=1
elseelse
ptAuxptAux
NULLNULL2323
![Page 79: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/79.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
ptUltptUltptrDescptrDesc
+=1+=1
elseelse
ptAuxptAux
NULLNULL2323
![Page 80: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/80.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
insereFim
![Page 81: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/81.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Exibe Inicio - Fim
ptrDescptrDesc
ptrptr
![Page 82: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/82.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Exibe Inicio - Fim
![Page 83: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/83.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Exibe Fim – Inicio
ptrDescptrDesc
ptrptr
![Page 84: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/84.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Exibe Fim – Inicio
![Page 85: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/85.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
![Page 86: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/86.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
![Page 87: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/87.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
NULLNULL
![Page 88: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/88.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
NULLNULL NULLNULL
![Page 89: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/89.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
NULLNULL-=1-=1NULLNULL
![Page 90: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/90.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
ifif
NULLNULL00NULLNULL
![Page 91: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/91.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
elseelse
![Page 92: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/92.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
primprim
![Page 93: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/93.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
primprim
![Page 94: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/94.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
primprim
-=1-=1
![Page 95: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/95.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeInicio
![Page 96: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/96.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
![Page 97: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/97.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
![Page 98: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/98.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
NULLNULL
![Page 99: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/99.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
NULLNULL NULLNULL
![Page 100: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/100.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
NULLNULL NULLNULL-=1-=1
![Page 101: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/101.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
ifif
NULLNULL NULLNULL 0 0
![Page 102: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/102.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
elseelse
![Page 103: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/103.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
elseelse
![Page 104: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/104.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
![Page 105: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/105.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
![Page 106: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/106.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
auxaux
ptrDescptrDesc
elseelse
NULL
NULL
-=1-=1
![Page 107: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/107.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
removeFim
![Page 108: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/108.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Libera
![Page 109: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/109.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
Resumindo
![Page 110: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/110.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
#include <iostream>#include <cstdlib>using namespace std;struct listaDE { int info; struct listaDE* ant; struct listaDE* prox;};//ProtótiposlistaDE *insere(listaDE *LISTA, int valor);listaDE *insereFim(listaDE *LISTA, int valor);void exibeIpF(listaDE *LISTA);void exibeFpI(listaDE *LISTA);listaDE *remove(listaDE *LISTA, int valor);listaDE *busca (listaDE *LISTA, int valor);int contaNos(listaDE *LISTA);void libera(listaDE *LISTA);
#include <iostream>#include <cstdlib>using namespace std;struct listaDE { int info; struct listaDE* ant; struct listaDE* prox;};//ProtótiposlistaDE *insere(listaDE *LISTA, int valor);listaDE *insereFim(listaDE *LISTA, int valor);void exibeIpF(listaDE *LISTA);void exibeFpI(listaDE *LISTA);listaDE *remove(listaDE *LISTA, int valor);listaDE *busca (listaDE *LISTA, int valor);int contaNos(listaDE *LISTA);void libera(listaDE *LISTA);
Menu LDE sem Descritor
![Page 111: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/111.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
int main(){ int op, valor; struct listaDE *lista= NULL; //inicializa a lista duplamente encadeada do { system("cls"); system("color 2f"); cout<<"\n\n( () ) Alocacao Dinamica ( () )"; cout<<"\n( )"; cout<<"\n( 1- Insere no Inicio )"; cout<<"\n( 2- Insere no Fim )"; cout<<"\n( 3- Remove da Lista DE )"; cout<<"\n( 4- Exibe a Lista DE IpF )"; cout<<"\n( 5- Exibe a Lista DE TpF )"; cout<<"\n( 6- Conta Nos da Lista DE )"; cout<<"\n( 7- Libera a Lista DE )"; cout<<"\n( 8- Sai )"; cout<<"\n( Opcao: )"; cout<<"\n( )"; cout<<"\n( ( ) ) ( ( ) ) ( ( ) ) ( ( ) )\n"; cin>>op;
int main(){ int op, valor; struct listaDE *lista= NULL; //inicializa a lista duplamente encadeada do { system("cls"); system("color 2f"); cout<<"\n\n( () ) Alocacao Dinamica ( () )"; cout<<"\n( )"; cout<<"\n( 1- Insere no Inicio )"; cout<<"\n( 2- Insere no Fim )"; cout<<"\n( 3- Remove da Lista DE )"; cout<<"\n( 4- Exibe a Lista DE IpF )"; cout<<"\n( 5- Exibe a Lista DE TpF )"; cout<<"\n( 6- Conta Nos da Lista DE )"; cout<<"\n( 7- Libera a Lista DE )"; cout<<"\n( 8- Sai )"; cout<<"\n( Opcao: )"; cout<<"\n( )"; cout<<"\n( ( ) ) ( ( ) ) ( ( ) ) ( ( ) )\n"; cin>>op;
![Page 112: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/112.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
system("cls");system("color f2");switch(op) { case 1:cout<<"\nDigite valor a ser inserido: "; cin>>valor; lista = insere(lista, valor); break;
case 2:cout<<"\nDigite valor a ser inserido: "; cin>>valor; lista = insereFim(lista, valor); break; case 3:if(!lista) cout << "\n\nNada a remover. Lista vazia\n"; else { cout<<"\nDigite valor a ser removido: "; cin>>valor; lista=remove(lista, valor); } break;
system("cls");system("color f2");switch(op) { case 1:cout<<"\nDigite valor a ser inserido: "; cin>>valor; lista = insere(lista, valor); break;
case 2:cout<<"\nDigite valor a ser inserido: "; cin>>valor; lista = insereFim(lista, valor); break; case 3:if(!lista) cout << "\n\nNada a remover. Lista vazia\n"; else { cout<<"\nDigite valor a ser removido: "; cin>>valor; lista=remove(lista, valor); } break;
![Page 113: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/113.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
case 4: if(!lista) cout << "\n\nLista vazia\n"; else exibeIpF(lista); break; case 5: if(!lista) cout << "\n\nLista vazia\n"; else exibeFpI(lista); break;
case 6:if(!lista) cout << "\n\nLista vazia\n"; else cout<<"\nTotal de nos: "<< contaNos(lista); break;
case 4: if(!lista) cout << "\n\nLista vazia\n"; else exibeIpF(lista); break; case 5: if(!lista) cout << "\n\nLista vazia\n"; else exibeFpI(lista); break;
case 6:if(!lista) cout << "\n\nLista vazia\n"; else cout<<"\nTotal de nos: "<< contaNos(lista); break;
![Page 114: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/114.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
case 7: if(lista) cout<<"\nTem elementos na Lista\n"; else { libera(lista); cout<<"\nLiberando Memoria"; } break; case 8: cout<<"Fechando Lista Duplamente Encadedada\n"; break; default:cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); } while(op !=8); return 0;}
case 7: if(lista) cout<<"\nTem elementos na Lista\n"; else { libera(lista); cout<<"\nLiberando Memoria"; } break; case 8: cout<<"Fechando Lista Duplamente Encadedada\n"; break; default:cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); } while(op !=8); return 0;}
![Page 115: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/115.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
// insere no início listaDE *insere(listaDE *LISTA, int valor){ listaDE* novo = new listaDE; novo->info = valor; novo->prox = LISTA; novo->ant = NULL; if (LISTA) { LISTA->ant = novo; } return novo;}
// insere no início listaDE *insere(listaDE *LISTA, int valor){ listaDE* novo = new listaDE; novo->info = valor; novo->prox = LISTA; novo->ant = NULL; if (LISTA) { LISTA->ant = novo; } return novo;}
![Page 116: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/116.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//insere no fimlistaDE *insereFim(listaDE *LISTA, int valor){ listaDE *novo, *aux; novo = new listaDE; novo->info = valor; novo->prox = NULL; if (LISTA == NULL) { novo->ant = LISTA; LISTA = novo; } else { aux = LISTA; while (aux->prox != NULL) aux = aux->prox; aux->prox = novo; novo->ant = aux; } return LISTA;}
//insere no fimlistaDE *insereFim(listaDE *LISTA, int valor){ listaDE *novo, *aux; novo = new listaDE; novo->info = valor; novo->prox = NULL; if (LISTA == NULL) { novo->ant = LISTA; LISTA = novo; } else { aux = LISTA; while (aux->prox != NULL) aux = aux->prox; aux->prox = novo; novo->ant = aux; } return LISTA;}
![Page 117: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/117.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
// exibe lista IpFvoid exibeIpF(listaDE *LISTA){ listaDE* ptr; cout<<"\nExibe a lista do primeiro para o ultimo\n"; for (ptr=LISTA; ptr != NULL; ptr=ptr->prox) cout<<"\n"<<ptr->info;} // exibe lista TpFvoid exibeFpI(listaDE *LISTA){ listaDE* ptr=LISTA; cout<<"\nExibe a lista do ultimo para o primeiro \n"; while(ptr->prox) { ptr=ptr->prox; } while(ptr!=LISTA) { cout<<"\n"<<ptr->info; ptr=ptr->ant; } cout<<"\n"<<ptr->info;}
// exibe lista IpFvoid exibeIpF(listaDE *LISTA){ listaDE* ptr; cout<<"\nExibe a lista do primeiro para o ultimo\n"; for (ptr=LISTA; ptr != NULL; ptr=ptr->prox) cout<<"\n"<<ptr->info;} // exibe lista TpFvoid exibeFpI(listaDE *LISTA){ listaDE* ptr=LISTA; cout<<"\nExibe a lista do ultimo para o primeiro \n"; while(ptr->prox) { ptr=ptr->prox; } while(ptr!=LISTA) { cout<<"\n"<<ptr->info; ptr=ptr->ant; } cout<<"\n"<<ptr->info;}
![Page 118: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/118.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
// remove um elemento da lista listaDE *remove(listaDE* LISTA, int valor){ listaDE *p = busca(LISTA,valor); if (!p) { cout<< "\nValor nao achado\n"; return LISTA; } // nao achou o elemento
// retira elemento do encadeamento if (LISTA == p) LISTA = p->prox; else p->ant->prox = p->prox; if (p->prox ) p->prox->ant = p->ant; cout<<"\nValor removido\n"; delete p; return LISTA;}
// remove um elemento da lista listaDE *remove(listaDE* LISTA, int valor){ listaDE *p = busca(LISTA,valor); if (!p) { cout<< "\nValor nao achado\n"; return LISTA; } // nao achou o elemento
// retira elemento do encadeamento if (LISTA == p) LISTA = p->prox; else p->ant->prox = p->prox; if (p->prox ) p->prox->ant = p->ant; cout<<"\nValor removido\n"; delete p; return LISTA;}
![Page 119: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/119.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
// busca valor na listalistaDE *busca (listaDE *LISTA, int valor){ listaDE *ptr; for (ptr=LISTA; ptr != NULL; ptr=ptr->prox) if (ptr->info == valor) return ptr; return NULL; // nao achou o elemento }
//conta nós da Listaint contaNos(listaDE *LISTA){ int conta = 0; while (LISTA != NULL) { conta++; LISTA = LISTA->prox; } return conta;}
// busca valor na listalistaDE *busca (listaDE *LISTA, int valor){ listaDE *ptr; for (ptr=LISTA; ptr != NULL; ptr=ptr->prox) if (ptr->info == valor) return ptr; return NULL; // nao achou o elemento }
//conta nós da Listaint contaNos(listaDE *LISTA){ int conta = 0; while (LISTA != NULL) { conta++; LISTA = LISTA->prox; } return conta;}
![Page 120: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/120.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//liberavoid libera(listaDE *LISTA){ delete LISTA; LISTA=0;}
//liberavoid libera(listaDE *LISTA){ delete LISTA; LISTA=0;}
![Page 121: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/121.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
#include <iostream>#include <cstdlib>using namespace std;
struct listaDE { int info; listaDE* ant; listaDE* prox;};
struct DE{ int tam; listaDE* prim; listaDE* ult;};
#include <iostream>#include <cstdlib>using namespace std;
struct listaDE { int info; listaDE* ant; listaDE* prox;};
struct DE{ int tam; listaDE* prim; listaDE* ult;};
Menu LDE com Descritor
![Page 122: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/122.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//ProtótiposDE *insereFim(DE *ptrDesc, int valor);DE *insereInicio(DE *ptrDesc, int valor);void exibeIpF(DE *ptrDesc);void exibeTpF(DE *ptrDesc);void libera(DE *ptrDesc);void removerFim(DE *ptrDesc);void removerInicio(DE *ptrDesc);
int main(){ int op, valor; //inicializa a lista duplamente encadeada DE *ptrDesc=new DE; ptrDesc->prim=NULL; ptrDesc->ult=NULL; ptrDesc->tam=0;
//ProtótiposDE *insereFim(DE *ptrDesc, int valor);DE *insereInicio(DE *ptrDesc, int valor);void exibeIpF(DE *ptrDesc);void exibeTpF(DE *ptrDesc);void libera(DE *ptrDesc);void removerFim(DE *ptrDesc);void removerInicio(DE *ptrDesc);
int main(){ int op, valor; //inicializa a lista duplamente encadeada DE *ptrDesc=new DE; ptrDesc->prim=NULL; ptrDesc->ult=NULL; ptrDesc->tam=0;
![Page 123: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/123.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
do { system("cls"); system("color 2f"); cout<<"\n\n( () ) Alocacao Dinamica ( () )"; cout<<"\n( )"; cout<<"\n( 1- Insere no Inicio )"; cout<<"\n( 2- Insere no Fim )"; cout<<"\n( 3- Remove no Inicio )"; cout<<"\n( 4- Remove no Fim )"; cout<<"\n( 5- Exibe a Lista DE IpF )"; cout<<"\n( 6- Exibe a Lista DE TpF )"; cout<<"\n( 7- Libera a Lista DE )"; cout<<"\n( 8- Sai )"; cout<<"\n( Opcao: )"; cout<<"\n( )"; cout<<"\n( ( ) ) ( ( ) ) ( ( ) ) ( ( ) )\n"; cin>>op;
do { system("cls"); system("color 2f"); cout<<"\n\n( () ) Alocacao Dinamica ( () )"; cout<<"\n( )"; cout<<"\n( 1- Insere no Inicio )"; cout<<"\n( 2- Insere no Fim )"; cout<<"\n( 3- Remove no Inicio )"; cout<<"\n( 4- Remove no Fim )"; cout<<"\n( 5- Exibe a Lista DE IpF )"; cout<<"\n( 6- Exibe a Lista DE TpF )"; cout<<"\n( 7- Libera a Lista DE )"; cout<<"\n( 8- Sai )"; cout<<"\n( Opcao: )"; cout<<"\n( )"; cout<<"\n( ( ) ) ( ( ) ) ( ( ) ) ( ( ) )\n"; cin>>op;
![Page 124: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/124.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
system("cls"); system("color f2");switch(op){ case 1:cout<<"\nDigite valor a ser inserido no Inicio: "; cin>>valor; ptrDesc=insereInicio(ptrDesc, valor); break; case 2:cout<<"\nDigite valor a ser inserido no Fim: "; cin>>valor; ptrDesc=insereFim(ptrDesc, valor); break; case 3: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else removerInicio(ptrDesc); break;
system("cls"); system("color f2");switch(op){ case 1:cout<<"\nDigite valor a ser inserido no Inicio: "; cin>>valor; ptrDesc=insereInicio(ptrDesc, valor); break; case 2:cout<<"\nDigite valor a ser inserido no Fim: "; cin>>valor; ptrDesc=insereFim(ptrDesc, valor); break; case 3: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else removerInicio(ptrDesc); break;
![Page 125: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/125.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
case 4: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else removerFim(ptrDesc); break; case 5: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else exibeIpF(ptrDesc); break;
case 6: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else exibeTpF(ptrDesc); break;
case 4: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else removerFim(ptrDesc); break; case 5: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else exibeIpF(ptrDesc); break;
case 6: if(ptrDesc->tam == 0) cout << "\n\nLista vazia\n"; else exibeTpF(ptrDesc); break;
![Page 126: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/126.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
case 7: if(ptrDesc->tam != 0) cout<<"\nTem elementos na Lista\n"; else { libera(ptrDesc); cout<<"\nLiberando Memoria"; } break; case 8: cout<<"Fechando Lista Duplamente Encadedada\n"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); } while(op !=8); return 0;}
case 7: if(ptrDesc->tam != 0) cout<<"\nTem elementos na Lista\n"; else { libera(ptrDesc); cout<<"\nLiberando Memoria"; } break; case 8: cout<<"Fechando Lista Duplamente Encadedada\n"; break; default: cout<<"\nOpcao Invalida\n"; } cout<<"\n\n"; system("pause"); } while(op !=8); return 0;}
![Page 127: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/127.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//insere no inicioDE *insereInicio(DE *ptrDesc, int valor){ listaDE *ptAux=new listaDE; if (ptAux != NULL) { //verifica se existe memória disponível ptAux->info = valor; ptAux->prox = ptrDesc->prim; ptAux->ant = NULL; ptrDesc->tam=ptrDesc->tam+1; if (ptrDesc->prim != NULL) { ptrDesc->prim->ant = ptAux; } else { ptrDesc->ult = ptAux; } //ajusta ponteiro para fim ptrDesc->prim=ptAux;//ajusta ponteiro início return ptrDesc; } else{ cout<<"\nSem memoria\n"; exit(-1);} }
//insere no inicioDE *insereInicio(DE *ptrDesc, int valor){ listaDE *ptAux=new listaDE; if (ptAux != NULL) { //verifica se existe memória disponível ptAux->info = valor; ptAux->prox = ptrDesc->prim; ptAux->ant = NULL; ptrDesc->tam=ptrDesc->tam+1; if (ptrDesc->prim != NULL) { ptrDesc->prim->ant = ptAux; } else { ptrDesc->ult = ptAux; } //ajusta ponteiro para fim ptrDesc->prim=ptAux;//ajusta ponteiro início return ptrDesc; } else{ cout<<"\nSem memoria\n"; exit(-1);} }
![Page 128: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/128.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//insere no fimDE *insereFim(DE *ptrDesc, int valor){ listaDE *ptAux=new listaDE; listaDE *ptUlt; ptAux->info = valor; ptAux->prox = NULL; ptrDesc->tam=ptrDesc->tam+1; if (ptrDesc->ult == NULL) { ptrDesc->ult=ptAux; ptrDesc->prim=ptrDesc->ult; ptAux->ant=NULL; } else { ptUlt=ptrDesc->ult; ptUlt->prox=ptAux; ptAux->ant=ptUlt; ptrDesc->ult=ptAux; } return ptrDesc;}
//insere no fimDE *insereFim(DE *ptrDesc, int valor){ listaDE *ptAux=new listaDE; listaDE *ptUlt; ptAux->info = valor; ptAux->prox = NULL; ptrDesc->tam=ptrDesc->tam+1; if (ptrDesc->ult == NULL) { ptrDesc->ult=ptAux; ptrDesc->prim=ptrDesc->ult; ptAux->ant=NULL; } else { ptUlt=ptrDesc->ult; ptUlt->prox=ptAux; ptAux->ant=ptUlt; ptrDesc->ult=ptAux; } return ptrDesc;}
![Page 129: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/129.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//remove do iniciovoid removerInicio(DE *ptrDesc){ listaDE *aux=new listaDE; if (ptrDesc->prim == ptrDesc->ult) { //lista com um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim = NULL; ptrDesc->ult = NULL; ptrDesc->tam=ptrDesc->tam - 1; } else { //lista com mais de um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim->prox->ant = NULL; ptrDesc->prim = ptrDesc->prim->prox; ptrDesc->tam=ptrDesc->tam - 1; } cout<<"\nRemovido: "<<aux->info;}
//remove do iniciovoid removerInicio(DE *ptrDesc){ listaDE *aux=new listaDE; if (ptrDesc->prim == ptrDesc->ult) { //lista com um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim = NULL; ptrDesc->ult = NULL; ptrDesc->tam=ptrDesc->tam - 1; } else { //lista com mais de um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim->prox->ant = NULL; ptrDesc->prim = ptrDesc->prim->prox; ptrDesc->tam=ptrDesc->tam - 1; } cout<<"\nRemovido: "<<aux->info;}
![Page 130: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/130.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//remove do fimvoid removerFim(DE *ptrDesc){ listaDE *aux=new listaDE; if (ptrDesc->prim == ptrDesc->ult) { //lista com um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim = NULL; ptrDesc->ult = NULL; ptrDesc->tam=ptrDesc->tam - 1; } else { //lista com mais de um elemento aux->info=ptrDesc->ult->info; ptrDesc->ult->ant->prox = NULL; ptrDesc->ult = ptrDesc->ult->ant; ptrDesc->tam=ptrDesc->tam - 1; } cout<<"\nRemovido: "<<aux->info;}
//remove do fimvoid removerFim(DE *ptrDesc){ listaDE *aux=new listaDE; if (ptrDesc->prim == ptrDesc->ult) { //lista com um elemento aux->info=ptrDesc->prim->info; ptrDesc->prim = NULL; ptrDesc->ult = NULL; ptrDesc->tam=ptrDesc->tam - 1; } else { //lista com mais de um elemento aux->info=ptrDesc->ult->info; ptrDesc->ult->ant->prox = NULL; ptrDesc->ult = ptrDesc->ult->ant; ptrDesc->tam=ptrDesc->tam - 1; } cout<<"\nRemovido: "<<aux->info;}
![Page 131: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/131.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
// exibe lista IpFvoid exibeIpF(DE *ptrDesc){ listaDE* ptr=ptrDesc->prim; cout<<"\nExibe a lista do primeiro para o ultimo\n"; for (int i=1; i<=ptrDesc->tam; i++) { cout<<"\n"<<ptr->info; ptr=ptr->prox; }}
// exibe lista TpFvoid exibeTpF(DE *ptrDesc){ listaDE* ptr=ptrDesc->ult; cout<<"\nExibe a lista do ultimo para o primeiro \n"; for (int i=ptrDesc->tam; i>=1; i--) { cout<<"\n"<<ptr->info; ptr=ptr->ant; }}
// exibe lista IpFvoid exibeIpF(DE *ptrDesc){ listaDE* ptr=ptrDesc->prim; cout<<"\nExibe a lista do primeiro para o ultimo\n"; for (int i=1; i<=ptrDesc->tam; i++) { cout<<"\n"<<ptr->info; ptr=ptr->prox; }}
// exibe lista TpFvoid exibeTpF(DE *ptrDesc){ listaDE* ptr=ptrDesc->ult; cout<<"\nExibe a lista do ultimo para o primeiro \n"; for (int i=ptrDesc->tam; i>=1; i--) { cout<<"\n"<<ptr->info; ptr=ptr->ant; }}
![Page 132: ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.](https://reader036.fdocuments.net/reader036/viewer/2022062307/552fc171497959413d8ee37a/html5/thumbnails/132.jpg)
ESTRUTURA DE DADOS
Listas Duplamente Encadeadas– Aula10
//liberavoid libera(DE *ptrDesc){ delete ptrDesc; ptrDesc=0;}
//liberavoid libera(DE *ptrDesc){ delete ptrDesc; ptrDesc=0;}