Top Banner
LISTA SIMPLESMENTE ENCADEADA – INSERIR DE FORMA ORDENADA Prof.ª M.ª Elaine Cecília Gatto
52

Inserindo em Ordem Crescente na Lista Encadeada

Jan 22, 2018

Download

Education

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Inserindo em Ordem Crescente na Lista Encadeada

LISTA SIMPLESMENTE ENCADEADA – INSERIR DE

FORMA ORDENADA

Prof.ª M.ª Elaine Cecília Gatto

Page 2: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEvoid ordemCrescente(node *LISTA)

{

node *aux1 = LISTA;

node *aux2 = LISTA;

node *novo = aloca();

novo->prox = NULL;

while((aux2!=NULL) && (aux2->num < novo->num))

{

aux1 = aux2;

aux2 = aux2->prox;

}

if(aux1 == aux2)

{

novo->prox = aux1;

LISTA = novo;

}

else

{

novo->prox = aux1->prox;

aux1->prox = novo;

Page 3: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

AUX1

PRÓXIMO

AUX1

node *aux1 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

Page 4: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

AUX1

Page 5: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

AUX2

PRÓXIMO

AUX2

node *aux2 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

Page 6: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

AUX2

Page 7: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

10 NULL

PRÓXIMO

NOVO

node *novo = aloca();

novo->prox = NULL;

NULL

Page 8: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX2

( Aux2 != null ) && (Aux2->num < novo->num )( V ) && ( 0 < 10 ) = V && V = V

10 NULL

PRÓXIMO

NOVO

NULL

Page 9: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX2

AUX1

PRÓXIMO

AUX1

Page 10: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

Page 11: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA AUX2

Page 12: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTAAUX2

( Aux2 != null ) && (Aux2->num < novo->num )( F ) && ( 0 < 10 ) = F && V = F

(Sai do while)

Page 13: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEif(aux1 == aux2)

{

novo->prox = aux1;

LISTA = novo;

}

( aux1 = aux 2)

F

NULLLista NULL

PRÓXIMO

LISTAAUX2

NULLLista NULL

PRÓXIMO

LISTA

AUX1

Page 14: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

NULL

Page 15: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

NULL

Page 16: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

Page 17: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista 0X90

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

Page 18: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

Lista AX90

PRÓXIMO

10 AUX1

PRÓXIMO

Page 19: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

Lista AX90

PRÓXIMO

10 AUX1

PRÓXIMO

AUX1

Page 20: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

Page 21: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *novo = aloca();

novo->prox = NULL;

5 NULL

PRÓXIMO

NULL

NOVO (0X1B)

Page 22: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

5 NULL

PRÓXIMO

NULL

NOVO (0X1B)

AX90

(Aux2 != NULL) && (Aux2 -> num < novo->num)( V ) && ( 0 < 5 ) = V && ( V ) = V

(entra no while)

Page 23: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

AX90

AUX1

PRÓXIMO

AUX1

Page 24: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

AX90

Page 25: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

AX90

Page 26: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

while((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

AX90

Page 27: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

AX90

(Aux2 != NULL) && (Aux2 -> num < novo->num)( V ) && ( 10 < 5 ) = V && ( F ) = F

(sai do while)

5 NULL

PRÓXIMO

NULL

NOVO (0X1B)

Page 28: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEif(aux1 == aux2) {

novo->prox = aux1;

LISTA = novo;

}

( aux1 = aux 2)

F

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

AX90

Page 29: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

5 NULL

PRÓXIMO

NOVO (0X1B)

AX90

NULL

Page 30: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

5 AX90

PRÓXIMO

NOVO (0X1B)

AX90

Page 31: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

5 AX90

PRÓXIMO

NOVO (0X1B)

AX90

Page 32: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

5 AX90

PRÓXIMO

NOVO (0X1B)

AX90

Page 33: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX1

5 AX90

PRÓXIMO

NOVO (0X1B)

AX90

Page 34: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

Page 35: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

AUX1

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

Page 36: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

AUX2

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

Page 37: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

node *novo = aloca();

novo->prox = NULL;

7 NULL

PRÓXIMO

NULL

NOVO (0X23)

Page 38: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

7 NULL

NULL

(Aux2 != NULL) && (Aux2 -> num < novo->num)( V ) && ( 0 < 7 ) = V && ( V ) = V

(entra no while)

0X23

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

Page 39: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 40: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 41: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 42: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

(Aux2 != NULL) && (Aux2 -> num < novo->num)( V ) && ( 5 < 7 ) = V && ( V ) = V

(entra no while)

Page 43: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 44: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 45: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 46: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEwhile((aux2!=NULL) && (aux2->num < novo->num)) {

aux1 = aux2;

aux2 = aux2->prox;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

(Aux2 != NULL) && (Aux2 -> num < novo->num)( F ) && ( 10 < 7 ) = F && ( F ) = F

(sai do while)

Page 47: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEif(aux1 == aux2) {

novo->prox = aux1;

LISTA = novo;

}

( aux1 = aux 2)

F

L 0X1B 5 0X9

0 10NULL

NULL

AUX2

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

Page 48: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 NULL

NULL

0X23

Page 49: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 0X90

0X23

Page 50: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

else {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 0X90

0X23

Page 51: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

else {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X2

3 10NULL

NULL

AUX1

7 0X90

0X23

Page 52: Inserindo em Ordem Crescente na Lista Encadeada

INSERINDO EM ORDEM CRESCENTE

L 0X1B 5 0X2

310

NULL

NULL7 0X9

0