A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estrutura de Dados Unidade 6 Simulação do exercício 6.1 Elaborada por Mauricio Falvo.

Apresentações semelhantes


Apresentação em tema: "Estrutura de Dados Unidade 6 Simulação do exercício 6.1 Elaborada por Mauricio Falvo."— Transcrição da apresentação:

1

2 Estrutura de Dados Unidade 6 Simulação do exercício 6.1 Elaborada por Mauricio Falvo

3 Ex. 6.1 Exercitando a notação para a manipulação de listas encadeadas Considere também as variáveis: P, P1, e P2 variáveis do tipo Ponteiro (ou seja, do mesmo tipo do campo Next); X uma variável do tipo char (ou seja, do mesmo tipo do campo Info). Considere válidas as seguintes operações sobre nós e ponteiros: P = GetNode { aloca um bloco de memória tipo Node e retorna o endereço em P} Freenode( P ) { libera o bloco de memória apontado por P } Info( P ) = X { o campo Info do nó apontado por P recebe o valor de X } X = Info( P ) { X recebe o valor do campo Info no nó apontado por P } P1 = P2 { o ponteiro P1 passa a apontar para onde aponta P2 } P1 = Next( P ) { P1 passa a apontar para onde aponta o campo Next do nó apontado por P } Next ( P ) = P1 { o campo Next do nó apontado por P passa a apontar para onde aponta P1 }

4 Ex. 6.1 Exercitando a notação para a manipulação 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 ABCD NULL PP1P2

5 Ex. 6.1 Exercitando a notação para a manipulação 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 ABCD NULL PP1P2 Nesta situação inicial, aplicamos a operação: X = Info( P ) Isso significa que a variável X passará a ter o valor do campo Info do Nó apontado pelo Ponteiro P. Ou seja, X recebe o valor ´B´. X B P ►

6 Ex. 6.1 Exercitando a notação para a manipulação 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 AB D NULL P P1 P2 ► ► Na próxima operação: 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. X B D C

7 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: Info(P2) = X O campo Info do nó apontado por P2 recebe o valor da variável X. Veja o resultado no quadro 4, em azul. X B DBD

8 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: X = Info( Next( P ) ) A variável X recebe o valor do campo Info do nó apontado pelo ponteiro Next(P), destacado em vermelho. Resultado em azul no quadro 5. X DB D B

9 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: 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. X DB D

10 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: Next( P ) = Null O campo Next do nó apontado por P (em azul) passa a apontar para Null. X DB D

11 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: Next( P ) = P O campo Next do nó apontado por P (em azul) passa a apontar para onde aponta P. X DB D

12 Ex. 6.1 Exercitando a notação para a manipulação 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 AB NULL P P1 P2 ► ► Operação: FreeNode(P) Libera o bloco de memória apontado por P. Note que o ponteiro P continua existindo. Apenas o bloco de memória foi liberado. P e Next(L) agora apontam para uma posição inválida. X DB D

13 Ex. 6.1 Exercitando a notação para a manipulação 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 NULL P P1 P2 ► ► Operação: GetNode( P ) Aloca um bloco de memória e retorna o endereço em P. Note, que ninguém além de P está apontando para o bloco de memória recém alocado. Next(L) continua apontado para posição inválida. X DB D P

14 Operação: Next(L) = P O campo Next do nó apontado por L, passa apontar para uma posição válida – a mesma que P aponta. Operação: Next(P) = P1 O campo Next do nó apontado por P, passa apontar para uma posição válida – a mesma que P1 aponta. Ex. 6.1 Exercitando a notação para a manipulação 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 NULL P1 P2 ► ► ► ► Operação: Info(P) = X O campo Info do nó apontado por P recebe o valor contido em X. X DB D P D

15 Operação: P = P1 O ponteiro P passa a apontar para onde o ponteiro P1 aponta. Ex. 6.1 Exercitando a notação para a manipulação 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 NULL P1 P2 ► ► X DB D P D P

16 Operação: P = P1 O campo Next do nó apontado por L, passa apontar para uma posição válida – a mesma que P aponta. Ex. 6.1 Exercitando a notação para a manipulação 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 NULL P1 P2 ► X DB D D P


Carregar ppt "Estrutura de Dados Unidade 6 Simulação do exercício 6.1 Elaborada por Mauricio Falvo."

Apresentações semelhantes


Anúncios Google