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

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

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

Apresentações semelhantes


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

1 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

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 1. Criar lista vazia 2. Inserir no início de uma lista 3. Inserir no fim de uma lista 4. Exibir se a lista está vazia 5. Exibir os dados do primeiro elemento 6. Exibir os dados do último elemento 7. Exibir todos os valores da lista 8. Exibir o tamanho da lista 9. Eliminar o primeiro elemento 10. Eliminar o último elemento 11. Eliminar o nó que possua o código digitado pelo usuário


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

Apresentações semelhantes


Anúncios Google