Sie sind auf Seite 1von 16

Estrutura de Dados

Unidade 6
Simulao do exerccio 6.1

Elaborada por Mauricio Falvo

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


Considere tambm as variveis: P, P1, e P2 variveis do tipo Ponteiro (ou seja, do mesmo tipo do campo Next); X uma varivel do tipo char (ou seja, do mesmo tipo do campo Info). Considere vlidas as seguintes operaes sobre ns e ponteiros: P = GetNode Freenode( P ) Info( P ) = X X = Info( P ) P1 = P2 P1 = Next( P ) Next ( P ) = P1 { aloca um bloco de memria tipo Node e retorna o endereo em P} { libera o bloco de memria apontado por P } { o campo Info do n apontado por P recebe o valor de X } { X recebe o valor do campo Info no n apontado por P } { o ponteiro P1 passa a apontar para onde aponta P2 } { P1 passa a apontar para onde aponta o campo Next do n apontado por P } { o campo Next do n apontado por P passa a apontar para onde aponta P1 }

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 C P2 D

NULL

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 C P2 D

NULL

Nesta situao inicial, aplicamos a operao: X = Info( P ) Isso significa que a varivel X passar a ter o valor do campo Info do N apontado pelo Ponteiro P. Ou seja, X recebe o valor B.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 C D P2 D

NULL

Na prxima operao: Info(P1) = Info( P2) O campo Info do n apontado por P1 recebe o valor do campo Info do N apontado por P2. Veja o resultado.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 D B

NULL

Operao: Info(P2) = X O campo Info do n apontado por P2 recebe o valor da varivel X. Veja o resultado no quadro 4, em azul.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 B

D B

NULL

Operao: X = Info( Next( P ) ) A varivel X recebe o valor do campo Info do n apontado pelo ponteiro Next(P), destacado em vermelho. Resultado em azul no quadro 5.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 B

NULL

Operao: Next( P ) = Next( P1) O campo Next do n apontado por P (em verde) passa a apontar para onde aponta o campo Next do n apontado por P1 (em vermelho). Resultado em azul no quadro 6.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 B

NULL

Operao: Next( P ) = Null O campo Next do n apontado por P (em azul) passa a apontar para Null.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 B

NULL

Operao: Next( P ) = P O campo Next do n apontado por P (em azul) passa a apontar para onde aponta P.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P B P1 D P2 B

NULL

Operao: FreeNode(P) Libera o bloco de memria apontado por P. Note que o ponteiro P continua existindo. Apenas o bloco de memria foi liberado. P e Next(L) agora apontam para uma posio invlida.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P P P1 D P2 B

NULL

Operao: GetNode( P ) Aloca um bloco de memria e retorna o endereo em P. Note, que ningum alm de P est apontando para o bloco de memria recm alocado. Next(L) continua apontado para posio invlida.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P D X D
NULL

P1 D

P2 B

Operao: Operao: Info(P) Next(P) =X P1 Next(L)= = P O Next do n apontado por P, O campo campo Info Nextdo don napontado apontadopor porP L, passa recebe apontar o valor para contido uma em posio X. passa apontar para uma posio vlida aponta. vlida a a mesma mesma que que P1 P aponta.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A P D X D
NULL

P P1 D

P2 B

Operao: P = P1 O ponteiro P passa a apontar para onde o ponteiro P1 aponta.

Ex. 6.1 Exercitando a notao para a manipulao de listas encadeadas


X = Info(P) Info(P1) = Info(P2) Info(P2) = X X = Info(Next(P)) Next(P) = Next(P1) Next(P) = Null Next(P) = P FreeNode(P) GetNode(P) Info(P) = X Next(P) = P1 Next(L) = P P = P1 L A D X D
NULL

P P1 D

P2 B

Operao: P = P1 O campo Next do n apontado por L, passa apontar para uma posio vlida a mesma que P aponta.

Das könnte Ihnen auch gefallen