Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


aula02, Notas de aula de Engenharia Telemática

Lista simplesmente encadeada

Tipologia: Notas de aula

Antes de 2010

Compartilhado em 29/11/2010

samuel-santos-22
samuel-santos-22 🇧🇷

4.6

(41)

262 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
1
1
1
Lista
Lista Linear
Linear
Encadeada
Encadeada
Estruturas de Dados
Estruturas de Dados
Prof. Alex Sandro
Lista Linear Encadeada
Listas Sequenciais: Desvantagens:
Não aloca memória de forma eficient e
Tamanho máximo pré-estimado
Não disponibiliza flexibilidade de manutenção
Movimentação quando um elemento é inserido ou removido
Memória ocupada mesmo quando a li sta está
vazia.
3
Lista Linear Encadeada
Listas Encadeadas
Nós da estrutura não ocupam necessariamente
espaços contíguos na memória;
Tipo de lista em que a sequência de elementos são
encadeados por ponteiros
Possuem ponteiros que guardam o endereço do registro sucessor;
Elementos são alocados dinamicamente;
Valores para ponteiros são gerados quando dados correspondentes
aseus tipos são alocados/desalocados dinamicamente
casa carro cama mes a
L
4
Lista Linear Encadeada
Listas Encadeadas (cont.)
Em C, a função malloc() é utilizada para alocar um
novo espaço em me mória. Para liberar um espaço
alocado, utiliza-se a função free();
Fica a cargo do programa (via linguagem de programação), e
não do programador, prover e fornecer espaço para
inserções e eliminações em tempo de execução;
Abiblioteca do malloc() e free() estão disponíveis na
biblioteca <alloc.h>.
Representação encadeada
Estrutura contendo os campos dado eprox;
prox é um ponteiro para o próximo nodo da lista.
dado
prox
Listas Encadeadas (cont.)
Na estrutura encadeada, a ligação entre os nós utiliza
mais espaço, visto que um novo campo foi incluído
Este fato não representa necessariamente mais memória
utilizada, já que o espaço destina dopa ra a informação pode
ser melhor aproveitado (tamanho do nó não precisa ser fixo)
Ouso do link dá flexibilidade à estrutura nas inserções
eretiradas de nós
Não é mais necessário realizar movimentações dos elementos
da lista (inserção/remoção)
Lista Linear Encadeada
x y z
a
xy z
a
Características
Algoritmos mais complexos;
Oúltimo de cada lista deverá apontar para
NULL;
Sinalização do final da lista.
Para acessar um nó qualquer, é necessári o
percorrer os elementos da lista
Na sequencial, isto é feito de forma direta
Melhor aproveitamento de memória
Espaço para o nó o é alocado previamente
Alocação pode ser feita com a memória fragmentada
Lista Linear Encadeada
pf2

Pré-visualização parcial do texto

Baixe aula02 e outras Notas de aula em PDF para Engenharia Telemática, somente na Docsity!

1

Lista Linear ListaLinear

EncadeadaEncadeada

Estruturas de Dados Estruturas de Dados

Prof. Alex Sandro

[email protected]

2

Lista Linear Encadeada

 Listas Sequenciais: Desvantagens :

 Não aloca memória de forma eficiente

 Tamanho máximo pré-estimado

 Não disponibiliza flexibilidade de manutenção

 Movimentação quando um elemento é inserido ou removido

 Memória ocupada mesmo quando a lista está

vazia.

3

Lista Linear Encadeada

 Listas Encadeadas

 Nós da estrutura não ocupam necessariamente

espaços contíguos na memória;

 Tipo de lista em que a sequência de elementos são

encadeados por ponteiros

 Possuem ponteiros que guardam o endereço do registro sucessor;  Elementos são alocados dinamicamente;

 Valores para ponteiros são gerados quando dados correspondentes a seus tipos são alocados/desalocados dinamicamente

casa carro^ cama^ mesa

L

4

Lista Linear Encadeada

 Listas Encadeadas (cont.)

 Em C, a função malloc() é utilizada para alocar um

novo espaço em memória. Para liberar um espaço

alocado, utiliza-se a função free();

 Fica a cargo do programa (via linguagem de programação), e não do programador, prover e fornecer espaço para inserções e eliminações em tempo de execução;  A biblioteca do malloc() e free() estão disponíveis na biblioteca <alloc.h>.

 Representação encadeada

 Estrutura contendo os campos dado e prox;  prox é um ponteiro para o próximo nodo da lista.

dado prox

 Listas Encadeadas (cont.)

 Na estrutura encadeada, a ligação entre os nós utiliza

mais espaço, visto que um novo campo foi incluído

 Este fato não representa necessariamente mais memória utilizada, já que o espaço destinado para a informação pode ser melhor aproveitado (tamanho do nó não precisa ser fixo)

 O uso do link dá flexibilidade à estrutura nas inserções

e retiradas de nós

 Não é mais necessário realizar movimentações dos elementos da lista (inserção/remoção)

Lista Linear Encadeada

x y z

a x y z

a

 Características

 Algoritmos mais complexos;

 O último nó de cada lista deverá apontar para

NULL;

 Sinalização do final da lista.

 Para acessar um nó qualquer, é necessário

percorrer os elementos da lista

 Na sequencial, isto é feito de forma direta

 Melhor aproveitamento de memória

 Espaço para o nó não é alocado previamente  Alocação pode ser feita com a memória fragmentada

Lista Linear Encadeada

2

2

7

Lista Linear Encadeada

 Implementando listas em C

 Alocação dinâmica é feita na área de heap;

 Uso de ponteiros e estruturas;

 OBS: existe diferença entre as operações de

atribuição entre ponteiros

 **p=q é diferente de p = q  Dada a situação abaixo:

p p1 p

q q1 q

p p1 p

q q1 q

se

p=q

8

Lista Linear Encadeada

 Se *p = *q, teremos:

 Esta atribuição é equivalente às atribuições

p->dado=q->dado e p->prox=q->prox;

 Operações básicas com ponteiros

 Declaração de variáveis:

lista *l1;

 Criação de um registro:

l1 = (lista*) malloc(sizeof(lista));

p p1 p

q q1 q

p q1 p

q q1 q

9

Lista Linear Encadeada

 Atribuição de conteúdo à estrutura:

p->dado = valor;

 Atribuição do valor nulo ao campo “ponteiro” do

registro:

p->prox = NULL;

 Liberando um nodo

 Libera o espaço apontado por p

free(p);

10

Lista Simplesmente Encadeada

 Tipo de lista que encadeada em que cada nodo

possui apenas um link;

 Operações sobre listas:

 Definição da estrutura de dados;

 Criação da lista vazia;

 Verificação de lista vazia;

 Obtenção do tamanho da lista;

 Obter o valor de uma determinada posição;

 Obter a posição do elemento cujo valor é dado;

 Inserir um elemento na lista, dada sua posição;

 Remover um elemento de uma determinada

posição.

Estrutura de Dados

 Boa dica de programação:

 Construa um código que seja legível!

 Primar por um código que tenha indentação. Isso facilita o entendimento!

 Comente o código

 O que ele faz?  O que uma função pode retornar?  Qual o papel de cada argumento de uma função?  O que você ganha com isso??? Organização e iniciação à documentação quando trabalharem com java (javadoc)  É um trabalho cansativo, mas extremamente importante quando se desenvolve um software.

 Defina o nome de uma variável com um

identificador que seja fácil de saber seu

propósito;