You are on page 1of 38

Estrutura de Dados

Listas Lineares
Aula 03
Prof. Lus Felippe Floriani
luis.felippe@ifsc.edu.br

Agenda:
3. Listas Lineares

3.1 Listas Genricas

3.2 Tipos de Representaes


3.2.1 Lista Representada por Contiguidade Fsica
3.2.2 Lista Representada por Encadeamento
3.2.3 Lista Encadeada com Descritor
3.2.4 Lista Duplamente Encadeada
3.2.5 Lista Lineares com Disciplinas de Acesso
3.2.5.1 Filas
3.2.5.1.1 Filas Circular
3.2.5.1.2 Filas com Alocao Dinmica
3.2.5.2 Pilhas
3.2.5.2.1 Pilhas com Alocao Dinmica
3.2.5.3 Deque

3. Listas Lineares
3.1 Listas Genricas

Conjunto de dados que mantm a relao de


ordem Linear entre os componentes.
composta de elementos (componentes ou ns),
os quais podem conter um dado primitivo ou
estruturado.

3. Listas Lineares
3.1 Listas Genricas

uma estrutura que permite representar um conjunto


de dados de forma a preservar a relao de ordem
entre eles. Uma lista linear X um conjunto de nodos
(ns) X1, X2, ... Xn, Tais que:
1) Existem n nodos na lista (n >= 0)
2) X1 o primeiro nodo da lista
3) Xn o ltimo nodo da lista
4) Para todo i,j entre 1 e n, se i<j, ento o elemento Xi antecede o
elemento Xj
5) Caso i = j-1, Xi o antecessor de Xj e Xj o sucessor de Xi

3. Listas Lineares
3.1 Listas Genricas

Exemplos de Listas

Lista de clientes de um Banco

Lista de Chamada

Fichrio

3. Listas Lineares
3.1 Listas Genricas

Operaes sobre Listas


1) Percurso

Permite utilizar cada um dos elementos de uma lista, de tal


forma que:
0 primeiro nodo utilizado o primeiro da lista;
Para utilizar o nodo Xj, todos os nodos de X1 at X(j-1) j foram
utilizados;
ltimo nodo utilizado o ltimo nodo da lista.

2) Busca

Procura um nodo especfico da lista linear, de tal forma que:

nodo identificado por sua posio na lista;

nodo identificado pelo seu contedo.

3. Listas Lineares
3.1 Listas Genricas

Operaes sobre Listas


3) Insero

Acrescenta um nodo X a uma lista linear, de tal forma que:


- Nodo X ter um sucessor e/ou um antecessor;
- Aps inserir o nodo X na posio i (i >= 1 e i <= n+1), ele passar a ser isimo nodo da lista;
- Nmero de elementos (n) acrescido de uma unidade.

3. Listas Lineares
3.1 Listas Genricas

Operaes sobre Listas


4) Retirada (Excluso)

Retira um nodo X da lista, de tal forma que:


- Se Xi o elemento retirado, o seu sucessor passa a ser o
sucessor de seu antecessor. X(i+1) passa a ser o sucessor de
X(i-1). Se Xi o primeiro nodo, o seu sucessor passa a ser o
primeiro, se Xi o ltimo, o seu antecessor passa a ser o
ltimo;
- Nmero de elementos (n) decrescido de uma unidade.

3. Listas Lineares
3.1 Listas Genricas

Operaes vlidas sobre Listas:

Acessar um elemento qualquer da lista;

Inserir um novo elemento lista;

Concatenar duas listas;

Determinar o nmero de elementos da lista;

Localizar um elemento da lista com um determinado valor;

Excluir um elemento da lista;

Alterar um elemento da lista;

Criar uma lista;

Destruir a lista.

3. Listas Lineares
3.2 Tipos de Representao

3.2.1 Lista Representada por Contiguidade


Fsica:

Os nodos so armazenados em endereos contguos ou


igualmente distanciados um do outro.
Os elementos so armazenados na memria um ao lado
do outro, levando-se e considerao o tipo de dado, ou
seja, a quantidade de bytes.
Se o endereo do nodo Xi conhecido, ento o
endereo do nodo X(i+1) pode ser determinado.

3. Listas Lineares
3.2 Tipos de Representao

3.2.1 Lista Representada por Contiguidade


Fsica:

Os relacionamentos so representados pela disposio


fsica dos componentes na memria;
A posio na estrutura lgica determina a posio na
estrutura fsica.
Observao: Uma lista pode ser implementada atravs
de um vetor de m elementos.
Ateno: Se n = m a Lista chamada Cheia
Como o nmero de nodos armazenados na lista pode
ser modificado durante a execuo do programa, devese representar como parte de um vetor de m
elementos com n <= m.

3. Listas Lineares
3.2 Tipos de Representao

Componentes de uma Lista:

Nmero de nodos da lista (n);

Vetor de nodos (v);

Tamanho total da lista (m).

// armazenado na posio 0 do vetor

final const m = 7;
int [] v = new int [m];

Observao: O nmero de elementos da lista ser


armazenado na posio 0 do vetor, ou seja: n = v[0].

Exerccios/Exemplos
1. Escreva um programa que demonstre a construo de uma lista
de m elementos, onde o nmero de elementos armazenado na
posio zero do vetor, ou seja: n = v[0].
2. Escreva um programa demonstrando a construo de uma lista de
m elementos ordenados diretamente na entrada de dados.
3. Escreva um programa demonstrando a construo de uma lista de
m elementos ordenados e sem repetio, diretamente na entrada
dos dados.

3. Listas Lineares
3.2 Tipos de Representao

Contiguidade Fsica:
Uma alternativa para representao por contiguidade fsica no
iniciar no incio do vetor, isto facilita as inseres.

Observao: As operaes de incluso e excluso de nodos


podem optar pela extremidade da lista que ir diminuir (no caso
de excluso) ou aumentar (no caso de insero) de comprimento.
A escolha dever considerar o caso que produz menor
movimentao de elementos.

3. Listas Lineares
3.2 Tipos de Representao

Contiguidade Fsica:
final int m = 7;
int inicio;
int fim;
int []v = new int[m];

ou
final int m = 7;
int []v = new int[m + 2];
// onde v[0] = inic e v[m] = fim

Lista vazia
incio = -1
fim = -1

Lista cheia
incio = 0
fim = m - 1

Exerccios/Exemplos/De
safios
1. Escreva um programa que demonstre permite a incluso de
nmeros inteiros no incio ou no fim da lista linear (mximo 7
elementos), partindo do meio do vetor:

2. Escreva um programa em Java que permite a incluso de nmeros


inteiros no incio ou no fim da lista linear (mximo 7 elementos)
avisando qual lado est cheio.
3. Escreva um programa em Java que permite a incluso de nmeros
inteiros em uma lista linear no incio, fim e na posio escolhida
pelo usurio.

3. Listas Lineares
3.2 Tipos de Representao

Vantagens e Desvantagens da Representao por


Contiguidade Fsica
Vantagens

A consulta pode ser calculada (acesso randmico aos dados);

Facilita a transferncia de dados (rea de memria contgua);

Adequada para o armazenamento de estruturas simples.

Desvantagens

O tamanho mximo da lista precisa ser conhecido e alocado


antecipadamente, pois a lista alocada estaticamente na
memria;
Inseres e remoes podem exigir considervel movimentao
de dados;

Inadequada para o armazenamento de estruturas complexas;

Mantm um espao de memria ocioso (no ocupado);

3. Listas Lineares
3.2 Tipos de Representao

3.2.2 Lista representada por


encadeamento

Permite Alocao Dinmica de Memria, ou seja,


a lista cresce com a execuo do programa.
Operaes como insero e remoo so mais
simples. Este tipo de estrutura se chama

3.2.2.1 Lista Encadeada Simples ou Lista


Encadeada.

A seguir ser visto duas formas de implementar uma


lista encadeada simples:
a) Usando uma classe do Java LinkedList;
b) Usando classes do programador: Nodo e ListaEncadeada.

Exerccios/Exemplos/De
safios
1. Escreva um programa que demonstre a incluso de nmeros
inteiros em uma lista encadeada simples usando a classe
LinkedList.
2. Escreva programa que demonstre a incluso de nmeros inteiros
em uma lista encadeada simples usando as classes: Nodo e
ListaEncadeada escritas pelo programador.
3. Escreva um programa que demonstre a incluso, excluso e
consulta de nmeros inteiros em uma lista encadeada simples
usando as classes: Nodo e ListaEncadeadaSimples.

3. Listas Lineares
3.2 Tipos de Representao

3.2.3 Lista Encadeada com Descritor

Como foi visto anteriormente, as dificuldades da lista


encadeada, descobrir o nmero de elementos e
ainda, acessar o ltimo elemento. Estas
dificuldades podem ser resolvidas utilizando-se um
descritor, da seguinte forma:

Exerccios/Exemplos/De
safio
1. Escreva um programa demonstrando a incluso e consulta de
nmeros inteiros ( esquerda e direita) em uma lista encadeada
simples
com
descritor
usando
as
classes:
Nodo
e
ListaEncadeadaDescritor.

3. Listas Lineares
3.2 Tipos de Representao

3.2.4 Lista Duplamente Encadeada

Na lista duplamente encadeada, cada elemento


possui um elo para o anterior e o posterior, sendo
que a lista pode ter ou no descritor.

Exerccios/Exemplos/De
safio
1. Escreva um programa demonstrando a incluso e exibio de
nmeros inteiros ( esquerda e direita) em uma lista duplamente
encadeada com descritor usando as classes: Nodo e
ListaDuplaEncadeadaDescritor.

3. Listas Lineares
3.2 Tipos de Representao

Vantagens e Desvantagens das Listas Duplamente


Encadeadas
Vantagens

Insero e remoo de componentes sem movimentar os


demais;
Pode-se ter qualquer quantidade de elementos, limitado pela
memria livre, pois cada elemento alocado dinamicamente.

Desvantagens

Gerncia de memria mais onerosa, alocao /desalocao


para cada elemento;

Procedimentos mais complexos;

Processamento serial (Acesso Sequencial).

3. Listas Lineares
3.2 Tipos de Representao

3.2.5 Listas Lineares com Disciplina de


Acesso
So tipos especiais de Listas Lineares, onde insero,
consulta e excluso so feitas somente nos extremos.
Estas listas lineares com disciplina de acesso so:
Filas, Pilhas e Deques.

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.1 Filas

uma Lista Linear na qual as inseres so feitas no


fim e as excluses e consultas no incio da fila.

Critrio de Utilizao:
FIFO - "First In First Out" (primeiro a entrar o primeiro a
sair).

Exerccios/Exemplos/De
safio
1. Escreva um programa demonstrando incluso, excluso e consulta
de nmeros inteiros em uma Fila usando a classe Fila.

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.1.1 Fila Circular

Exerccios/Exemplos/De
safios
1. Escreva um programa demonstrando a incluso, excluso e
consulta de nmeros inteiros em uma Fila Circular usando a classe
FilaCircular.

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.1.2 Fila com Alocao Dinmica

Exerccios/Exemplos/
Desafios
1. Escreva um programa demonstrando a incluso, excluso e
consulta de nmeros inteiros em uma Fila alocada dinamicamente
usando as classes: Nodo e FilaDinamica.

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.2 Pilhas

uma Lista Linear na qual as inseres, excluses e


consultas so feitas em um mesmo extremo (Topo).

Critrio de Utilizao:
LIFO - "Last In First Out" (ltimo a entrar o primeiro a sair)

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.2.1 Pilhas com Vetor

Exerccios/Exemplos/De
safios
1. Escreva um programa demonstrando demonstra a incluso,
excluso e consulta de nmeros inteiros em uma Pilha alocada
estaticamente usando a classe PilhaVetor.

Operaes sobre Pilhas

criaPilha(); Cria pilha Vazia

erro = push(i); Empilha o dado "i" no topo da Pilha

erro = pop(); Desempilha o primeiro elemento

erro = consultaPilha(); Exibe o primeiro elemento

Identificadores da Pilha

B(p) Base da Pilha

T(p) Topo da Pilha

L(p) Limite da Pilha

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.2.2 Pilhas com Alocao Dinmica

Exerccios/Exemplos/
Desafios
1. Escreva um programa demonstrando a incluso, excluso e
consulta em uma Pilha alocada dinamicamente.
2. Implementar em Java um Analisador de Expresses utilizando
Pilhas.
Exemplo: (3 * (4 + 5))

Dicas:

1.
2.
3.
4.
5.
6.

Crie duas PILHAS (nmeros e operandos);


"(" no faa nada;
Nmero (Push pilha 2) empilhe na pilha de nmeros;
Operando (Push pilha 1) empilhe na pilha de operandos;
")" (Pop pilha 2, Pop pilha 2 e Pop pilha 1) execute a operao;
At que i = e[0]

3. Listas Lineares
3.2 Tipos de Representao

3.2.5.3 Deque (Double-Ended QUEue)


uma fila de duas extremidades. As inseres, consultas e
retiradas so permitidas nas duas extremidades.

Deque de Entrada Restrita


A insero s pode ser efetuada no incio ou no final da lista.
Deque de Sada Restrita
A retirada s pode ser efetuada no incio ou no final da lista.

Exerccios/Exemplos/De
safios
1. Escreva um programa demonstrando a incluso, a excluso e a
consulta de dados em um deque.

You might also like