inserindo em ordem crescente na lista encadeada

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

Upload: elaine-cecilia-gatto

Post on 22-Jan-2018

168 views

Category:

Education


1 download

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