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

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

Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados

Apresentações semelhantes


Apresentação em tema: "Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados"— Transcrição da apresentação:

1 Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Ponteiros Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados

2 Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço de memória é normalmente a posição de uma outra variável na memória. Se uma variável contém o endereço de memória de uma outra, então a primeira variável é dita apontar para a segunda.

3 Exemplo de ponteiro Endereço na memória Variável na memória 1000 1001
1002 1003 1004 1001 1005

4 Declaração de ponteiro
Para utilizar uma variável ponteiro, ela deve ser declarada da seguinte maneira: tipo *nome_ponteiro; Exemplo: int *p;

5 Operadores de ponteiros
Existem 2 operadores unários: * - obtém o conteúdo do endereço apontado & - obtém o endereço de memória do operando.

6 Exemplo char *pont; int t; char texto[] = "marieta das graças";
pont = &texto[0]; for(t=strlen(pont)-1; t>=0; t--){ printf("%c", pont[t]); }

7 Lista Dinâmica Encadeada

8 Listas dinâmicas x estáticas
Embora os algoritmos de manipulação de listas com alocação estática sejam relativamente simples, seu uso prático é limitado, principalmente se for considerado a otimização de uso da memória. Duas situações são bastante comuns: tamanho da lista é superdimensionado, havendo neste caso um possível desperdício de memória; a lista é dimensionada com o tamanho inferior ao necessário – nesta situação ou tempo de processamento adicional deve ser inserido para criar uma nova lista, maior que a original, e copiar os dados de uma lista para outra. A solução é utilizar listas alocadas dinamicamente.

9 Lista Dinâmica Encadeada
Uma lista encadeada é constituída de nós ou nodos. Cada nó contém, no mínimo, dois campos: uma refere-se ao dado armazenado na lista naquela posição, a outra refere-se a um ponteiro a outro nó na mesma lista. O dado é a própria informação da aplicação, o ponteiro (ou ponteiros) permite o encadeamento da lista. Denomina-se o primeiro nó da lista de cabeça e o último de último.

10 Lista Dinâmica Encadeada
Em listas dinâmicas, cada novo dado inserido na lista é encapsulado em um nó, e este nó é alocado dinamicamente, ou seja, conforme necessidade do programa em execução e inserido na lista. A utilização de lista dinâmica consome um tempo maior de processamento, pois requer alocação e liberação dinâmica de memória, no entanto, na prática, o ganho e a versatilidade frente a estratégias estáticas é muito maior. NULL

11 Lista Dinâmica Encadeada
Uma lista encadeada é uma sucessão de nós onde cada nó aponta para o próximo nó da lista. O nó que possuir o valor NULL no ponteiro para próximo é o último nó da lista. É de extrema importância que seja mantida uma referência para o primeiro nó da lista, caso esta referência for NULL, significa que a lista esta vazia. Em certas situações também é útil possuir uma referência ao último nó.

12 Exemplo de estrutura de nó
struct Registro { int codigo; char nome[50]; Registro *proximo; };

13 Alocação dinâmica Malloc() – aloca memória Free() – libera memória
registro *no; no = (registro*) malloc(sizeof(registro));

14 Atividade: Operações sobre Listas Encadeadas Dinâmicas
Criar lista vazia Inserir no início de uma lista Inserir no fim de uma lista Exibir se a lista está vazia Exibir os dados do primeiro elemento Exibir os dados do último elemento Exibir todos os valores da lista Exibir o tamanho da lista Eliminar o primeiro elemento Eliminar o último elemento Eliminar o nó que possua o código digitado pelo usuário


Carregar ppt "Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados"

Apresentações semelhantes


Anúncios Google