lista duplamente ligada (lista duplamente encadeada)glaucya/ifsp/edi/edi_lista duplamente...
TRANSCRIPT
![Page 2: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/2.jpg)
2
Lista Duplamente LigadaLista Duplamente Ligada
lista
6 8 3
\
\
![Page 3: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/3.jpg)
3
Lista Duplamente LigadaLista Duplamente Ligada
● Cada nó na lista duplamente ligada possui um ponteiro para o nó precessor e outro para o nó sucessor.
● Permite percurso nas duas direções.– Direita
– Esquerda.
![Page 4: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/4.jpg)
4
Lista Duplamente LigadaLista Duplamente Ligada
typedef struct no { int valor; struct no* ant; struct no* prox; }No;
![Page 5: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/5.jpg)
5
Insere no inicio da lista duplamente ligada
Insere no inicio da lista duplamente ligada
void insere_lista_duplamente_ligada(No** lista, int v){
No* no; no = (No*) malloc(sizeof(No)); no>valor = v;
if(*lista == NULL){
no>ant = NULL;no>prox = NULL;
}else{
no>prox = *lista;no>ant = NULL;(*lista)>ant = no;
}
*lista = no; }
![Page 6: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/6.jpg)
6
Insere no inicio da lista duplamente ligada
Insere no inicio da lista duplamente ligada
void main() {
No* lista_dl;
lista_dl = NULL;
insere_lista_duplamente_ligada(&lista_dl, 7); imprime_lista_duplamente_ligada(lista_dl);
}
![Page 7: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/7.jpg)
7
Insere no inicio da listaInsere no inicio da lista
lista
6 8 3
\\
X = 7
a
![Page 8: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/8.jpg)
8
Insere no inicio da listaInsere no inicio da lista
lista
6 8 3
\\
X = 7
a
lista
6 8 3
\\
7
\b
![Page 9: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/9.jpg)
9
Insere no inicio da listaInsere no inicio da lista
lista
6 8 3
\\
7
\c
lista
6 8 3
\\
7
\b
![Page 10: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/10.jpg)
10
Insere no inicio da listaInsere no inicio da lista
lista
6 8 3
\\
7
\c
lista
6 8 3\
7
\d
![Page 11: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/11.jpg)
11
Insere no inicio da listaInsere no inicio da lista
lista
6 8 3\
7
\d
6 8 3\
7
\e
lista
![Page 12: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/12.jpg)
12
Lista Duplamente LigadaLista Duplamente Ligada
inicio fim
6 8 3
\\
![Page 13: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/13.jpg)
13
Lista Duplamente LigadaLista Duplamente Ligada
typedef struct no { int valor; struct no* ant; struct no* prox;}No;
typedef struct lista{ No *inicio, *fim;}Lista_dl;
![Page 14: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/14.jpg)
14
Imprime listaImprime lista
void imprime_lista(Lista_dl lista){ No *aux = lista.inicio; while (aux != NULL) { printf("%d ", aux>valor); aux = aux>prox; }
printf("\n");}
![Page 15: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/15.jpg)
15
Inicializa listaInicializa lista
void inicia(Lista_dl *lista){
lista>inicio = lista>fim = NULL;}
![Page 16: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/16.jpg)
16
Inicializa listaInicializa lista
void main() {
Lista_dl lista_dl;
inicia(&lista_dl);
/...
}
![Page 17: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/17.jpg)
19
Insere no início da listaInsere no início da listavoid insere_fim(Lista_dl* lista, int v){
No* no; no = (No*) malloc(sizeof(No)); no>valor = v; no>prox = NULL;
if(lista>inicio == NULL){ no>ant = NULL; lista>inicio = lista>fim = no; }else{
no>ant = lista>fim; (lista>fim)>prox = no; lista>fim = no; }}
![Page 18: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/18.jpg)
20
Insere no fim da listaInsere no fim da lista
void main() {
Lista_dl lista_dl;
inicia(&lista_dl);
insere_fim(&lista_dl, 3);imprime_lista(lista_dl);
/...
}
![Page 19: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/19.jpg)
21
Insere no fim da listaInsere no fim da lista
inicio fim
6 8 3
\\
X = 7
![Page 20: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/20.jpg)
22
Insere no fim da listaInsere no fim da lista
inicio fim
6 8 3
\\
X = 7
inicio fim
6 8 3
\\
X = 7
7\
a
![Page 21: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/21.jpg)
23
Insere no fim da listaInsere no fim da lista
inicio fim
6 8 3
\\
X = 7
7\
a
inicio fim
6 8 3
\\
7\
b
![Page 22: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/22.jpg)
24
Insere no fim da listaInsere no fim da lista
inicio fim
6 8 3
\\
7\
b
inicio fim
6 8 3
\
7\
c
![Page 23: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/23.jpg)
25
Insere no fim da listaInsere no fim da lista
inicio fim
6 8 3
\
7\
c
inicio fim
6 8 3
\
7\
d
![Page 24: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/24.jpg)
28
Remove no fim da listaRemove no fim da listaint remove_fim(Lista_dl *lista) { No *no; int v; if (lista>inicio == NULL) return 1; no = lista>fim; if(lista>inicio == lista>fim)
lista>inicio = lista>fim = NULL; else{ lista>fim = no>ant; (lista>fim)>prox = NULL; } v = no>valor; free(no); return v;}
![Page 25: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/25.jpg)
29
Remove no fim da listaRemove no fim da lista
void main() {
/...
remove_fim(&lista_dl);imprime_lista(lista_dl);
}
![Page 26: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/26.jpg)
30
Remove no fim da listaRemove no fim da lista
inicio fim
6 8 3
\
7\
![Page 27: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/27.jpg)
31
Remove no fim da listaRemove no fim da lista
inicio fim
6 8 3
\
7\
a
inicio fim
6 8 3
\
7\
no
X = 7
![Page 28: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/28.jpg)
32
Remove no fim da listaRemove no fim da lista
inicio fim
6 8 3
\
7\
a
no
X = 7
X = 7
fim
6 8 3
\
7\
b
inicio no
![Page 29: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/29.jpg)
33
Remove no fim da listaRemove no fim da lista
X = 7
fim
6 8 3
\
7\
b
inicio no
X = 7
fim
6 8 3
\\
7\
inicio
c
no
![Page 30: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/30.jpg)
34
Remove no fim da listaRemove no fim da lista
X = 7
fim
6 8 3
\\
7\
inicio
c
no
X = 7
inicio fim
6 8 3
\\
d
![Page 31: Lista Duplamente Ligada (Lista Duplamente Encadeada)glaucya/ifsp/EDI/EDI_lista duplamente liga… · 3 Lista Duplamente Ligada Cada nó na lista duplamente ligada possui um ponteiro](https://reader033.vdocuments.pub/reader033/viewer/2022042612/5f413f2db97f73438b7c3bbb/html5/thumbnails/31.jpg)
35
Lista Duplamente CircularLista Duplamente Circular
lista
6 8 3