remoção em lista simplesmente encadeada

30
LISTA SIMPLESMENTE ENCADEADA – REMOÇÃO Prof.ª M.ª Elaine Cecília Gatto

Upload: elaine-cecilia-gatto

Post on 22-Jan-2018

186 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Remoção em Lista Simplesmente Encadeada

LISTA SIMPLESMENTE ENCADEADA – REMOÇÃO

Prof.ª M.ª Elaine Cecília Gatto

Page 2: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

Page 3: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *retiraInicio(node *LISTA)

{

if (LISTA->prox == NULL) {

printf("Lista ja esta vazia\n");

return NULL;

} else {

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

tam--;

return tmp;

}

}

Page 4: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

if (LISTA->prox == NULL) {

printf("Lista esta vazia\n");

return NULL;

NULLNULL

PRÓXIMO

LISTA (0X10)

Page 5: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

tam--;

return tmp;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 6: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

0XA

PRÓXIMO

AUX

Page 7: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

0XA

PRÓXIMO

AUX

Page 8: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

AUX

Page 9: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

AUX

Page 10: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

AUX

Page 11: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

x 0XB1

PRÓXIMO

LISTA 0XB1

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

AUX

Page 12: Remoção em Lista Simplesmente Encadeada

REMOVER DO INICIO

node *aux = LISTA->prox;

LISTA->prox = aux->prox;

LISTA 0XB1

PRÓXIMO

0XA

NULLk NULL

PRÓXIMO

0XB1

Page 13: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIM

Page 14: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIM

node *retiraFim(node *LISTA) {

if(LISTA->prox == NULL){

printf("Lista ja vazia\n\n");

return NULL;

} else {

node *ultimo = LISTA->prox, *penultimo = LISTA;

while(ultimo->prox != NULL){

penultimo = ultimo;

ultimo = ultimo->prox;

}

penultimo->prox = NULL;

tam--;

return ultimo;

}

}

Page 15: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIM

if(LISTA->prox == NULL){

printf("Lista ja vazia\n\n");

return NULL;

NULLNULL

PRÓXIMO

LISTA (0X10)

Page 16: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIM

{ node *ultimo = LISTA->prox, *penultimo = LISTA;

while(ultimo->prox != NULL){

penultimo = ultimo;

ultimo = ultimo->prox;

} penultimo->prox = NULL;

tam--;

return ultimo;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 17: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIMnode *ultimo = LISTA->prox, *penultimo = LISTA;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

PRÓXIMO

Ultimo

Page 18: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIMnode *ultimo = LISTA->prox, *penultimo = LISTA;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

PRÓXIMO

Ultimo

Page 19: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIMnode *ultimo = LISTA->prox, *penultimo = LISTA;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

ULTIMO

Page 20: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIMnode *ultimo = LISTA->prox, *penultimo = LISTA;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

PRÓXIMO

Penúltimo

ULTIMO

Page 21: Remoção em Lista Simplesmente Encadeada

REMOVER DO FIMnode *ultimo = LISTA->prox, *penultimo = LISTA;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

ULTIMOPENULTIMO

Page 22: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Ultimo -> prox != null0XB1 != NULL

F

Page 23: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 24: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 25: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 26: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 27: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMwhile(ultimo->prox != NULL) { penultimo = ultimo; ultimo = ultimo->prox; }

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Ultimo -> prox != nullNULL != NULL

V

Page 28: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMpenultimo->prox = NULL;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 29: Remoção em Lista Simplesmente Encadeada

ULTIMOPENULTIMO

REMOVER DO FIMpenultimo->prox = NULL;

x 0XB1

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULLk NULL

PRÓXIMO

0XB1

Page 30: Remoção em Lista Simplesmente Encadeada

PENULTIMO

REMOVER DO FIMpenultimo->prox = NULL;

x NULL

PRÓXIMO

LISTA 0X15

PRÓXIMO

0X150XA

NULL