inserindo em ordem crescente na lista encadeada
Post on 22-Jan-2018
168 Views
Preview:
TRANSCRIPT
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
top related