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

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

Alocação Dinâmica de Memória Estruturas Encadeadas.

Apresentações semelhantes


Apresentação em tema: "Alocação Dinâmica de Memória Estruturas Encadeadas."— Transcrição da apresentação:

1 Alocação Dinâmica de Memória Estruturas Encadeadas

2 Motivação O uso de estruturas encadeadas dinamicamente permite criar estruturas de dados versáteis que permitem

3 Conceitos Estrutura auto-referenciada –Um estrutura auto referência possui dentro seus campos, um campo que pode referenciar estruturas idênticas a ela mesma. –Portanto, uma estrutura auto referenciada pode apontar para outra estrutura do mesmo tipo que ela

4 Implementando um estrutura auto- referenciada –Exemplo: struct Ponto { int x,y; int cor; struct Ponto *proximoPonto; }; x y cor proximoPonto

5 Implementando um estrutura auto- referenciada main(){ /*declarando uma lista de struct Ponto */ struct Ponto *lPontos, aux; // lista de pontos lPontos e aux lPontos? /* alocando um struct Ponto a atribuindo o seu endereço ao inicio da lista */ lPontos = malloc(struct Ponto); x y cor proximoPonto?lPontos

6 Implementando um estrutura auto- referenciada /*Atribuindo os valores do Ponto*/ lPontos->x = 3; lPontos->y = 5; lPontos->cor = 245; /* Atribuindo NULL ao proximo ponto */ lPontos->proximoPonto = NULL; x 3 y 5 cor 245 proximoPonto NULL lPontos

7 Adicionando um novo ponto a lista Alternativa 1 – Inserindo no início da lista de pontos aux = lPontos; lPontos = malloc (struct lPontos); lPontos->x = 20; lPontos->y = 30; lPontos->cor = 135; lPontos->proximoPonto = aux; x 3 y 5 cor 245 proximoPonto NULL x 20 y 30 cor 135 proximoPonto lPontos

8 Adicionando um novo ponto a lista Alternativa 2 – Inserindo no início da lista de pontos aux = malloc (struct lPontos); aux->x = 20; aux->y = 30; aux->cor = 135; aux->proximoPonto = NULL; lPontos->proximoPonto = aux; x 20 y 30 cor 135 proximoPonto NULL x 3 y 5 cor 245 proximoPonto lPontos

9 Removendo um ponto Exemplos: –remover o primeiro ponto da lista: aux = lPontos->proximoPonto; free(lPontos); lPontos = aux; –remover o segundo ponto da lista: free(lPontos->proximoPonto); lPontos->proximoPonto=NULL;

10 Redefinindo a struct Ponto typedef struct Ponto{ int x,y,cor; } Ponto; typedef struct noLista { Ponto p; struct noLista *prox; }noLista; typedef *noLista Lista;

11 Generalizando as funções de inserção e remoção int inserePonto(Lista *l, Ponto p); int removePonto(Lista *l, int x, int y);


Carregar ppt "Alocação Dinâmica de Memória Estruturas Encadeadas."

Apresentações semelhantes


Anúncios Google