Inserindo em Ordem Crescente na Lista Encadeada

Preview:

Citation preview

LISTA SIMPLESMENTE ENCADEADA – INSERIR DE

FORMA ORDENADA

Prof.ª M.ª Elaine Cecília Gatto

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;

INSERINDO EM ORDEM CRESCENTE

AUX1

PRÓXIMO

AUX1

node *aux1 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

AUX1

INSERINDO EM ORDEM CRESCENTE

AUX2

PRÓXIMO

AUX2

node *aux2 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

NULLLista NULL

PRÓXIMO

LISTA

AUX2

INSERINDO EM ORDEM CRESCENTE

10 NULL

PRÓXIMO

NOVO

node *novo = aloca();

novo->prox = NULL;

NULL

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

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

INSERINDO EM ORDEM CRESCENTE

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

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

INSERINDO EM ORDEM CRESCENTE

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

aux1 = aux2;

aux2 = aux2->prox;

}

NULLLista NULL

PRÓXIMO

LISTA AUX2

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)

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

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

NULL

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

NULL

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista NULL

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

LISTA = novo;

}

NULLLista 0X90

PRÓXIMO

LISTA

AUX1

10 NULL

PRÓXIMO

NOVO

INSERINDO EM ORDEM CRESCENTE

Lista AX90

PRÓXIMO

10 AUX1

PRÓXIMO

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

Lista AX90

PRÓXIMO

10 AUX1

PRÓXIMO

AUX1

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

Lista AX90

PRÓXIMO

10 NULL

PRÓXIMO

NULL

AUX2

INSERINDO EM ORDEM CRESCENTE

node *novo = aloca();

novo->prox = NULL;

5 NULL

PRÓXIMO

NULL

NOVO (0X1B)

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)

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

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

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

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

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)

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

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

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

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

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

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

INSERINDO EM ORDEM CRESCENTE

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

INSERINDO EM ORDEM CRESCENTE

node *aux1 = LISTA;

AUX1

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

INSERINDO EM ORDEM CRESCENTE

node *aux2 = LISTA;

AUX2

Lista 0X1B

PRÓXIMO

10 NULL

PRÓXIMO

NULL5 AX90

PRÓXIMO

INSERINDO EM ORDEM CRESCENTE

node *novo = aloca();

novo->prox = NULL;

7 NULL

PRÓXIMO

NULL

NOVO (0X23)

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

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

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

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

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)

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

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

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

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)

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

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 NULL

NULL

0X23

INSERINDO EM ORDEM CRESCENTEelse {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 0X90

0X23

INSERINDO EM ORDEM CRESCENTE

else {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X9

0 10NULL

NULL

AUX1

7 0X90

0X23

INSERINDO EM ORDEM CRESCENTE

else {

novo->prox = aux1->prox;

aux1->prox = novo;

}

L 0X1B 5 0X2

3 10NULL

NULL

AUX1

7 0X90

0X23

INSERINDO EM ORDEM CRESCENTE

L 0X1B 5 0X2

310

NULL

NULL7 0X9

0

Recommended