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

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Denise Guliato Faculdade de Computação – UFU
Nivelamento de C: Ponteiros e Alocação Dinâmica
Listas encadeadas Prof. Rosana Palazon.
Programação II Estruturas de Dados
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Variáveis Dinâmicas Caixas de Nós
Ponteiros em C.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade de Brasília
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
Slides: Prof. João Fabro UTFPR - Curitiba
Listas Encadeadas.
Apontadores ou Ponteiros
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso B: Remover o elemento que está no meio da lista, sendo que a lista possui vários.
Ponteiros em Pascal Variáveis ponteiros são aquelas que guardam o endereço de outra, possibilitando o acesso a seu conteúdo. Declaração em Pascal:  var.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02a Roberto Ferrari Mauricio Falvo.
Ponteiros Variáveis do tipo “ponteiro” armazenam endereços de memória
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Linguagem de Programação II Parte IX
Denise Guliato Faculdade de Computação – UFU
Aula 11 LISTAS LIGADAS.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 02b Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 04b Roberto Ferrari Mauricio Falvo.
Roberto Ferrari Mauricio Falvo
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.1 REMOVER Caso B: Remover o elemento que está no primeiro nó da lista, sendo que a lista possui.
Estrutura de Dados Unidade 9 Simulação do Algoritmo 9.7 Caso C: FindNext – Estrutura com Elementos e Próximo Existe Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso D: Remover elemento que é único na lista. Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso C: Tentar remover elemento que não está na lista. Roberto Ferrari Mauricio Falvo.
Estrutura de um nó Value: armazena o conteúdo do nó. Pode ser qualquer tipo de dados, inclusive, uma outra estrutura. Next: apontador para o próximo nó.
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de Dados Unidade 9 Simulação do Algoritmo 9.7 Caso E: FindNext – Estrutura Com Elementos e Próximo Não Existe Roberto Ferrari Mauricio Falvo.
Estrutura de Dados Unidade 6 Simulação do exercício 6.2 Elaborada por Mauricio Falvo.
Estruturas de Dados com Jogos
Denise Guliato Faculdade de Computação – UFU
Estrutura de Dados Unidade 9 Simulação do exercício 9.2 CASO 03a
Professor Mário Dantas
Prof. Ricardo Santos PONTEIROS
Algoritmos e Estruturas de Dados I – Ponteiros
Estrutura de Dados Unidade 10 Simulação do Algoritmo 10.3 REMOVER Caso A: Remover o elemento que está no primeiro nó da lista, sendo que a lista possui.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Listas Simplesmente Encadeadas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 17: Estruturas Genéricas
ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores
Prof. Alessandro Gonçalves
Estrutura de Dados II Alocação Dinâmica. Alocação de memória Ao ser executado, um programa carrega seu código executável para a memória; Uma parte da.
Aula Prática 12 Listas Encadeadas Monitoria
Estrutura de Dados Aula 3 - Listas
Ponteiros. Programação II Professora: Mai-Ly vanessa horário: ter 9h-11h; sex 11h-13h Aula 1.
Linguagem de Programação
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Funções Passagem por valor e por referência passo a passo.
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
Aula Prática 6 Ponteiros Monitoria  Quando declaramos uma matriz:  tipo meuArray[tam];  O compilador aloca a matriz em uma região de memória.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Transcrição da apresentação:

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

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 }

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

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 ►

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

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

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

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

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

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

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

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

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

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

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