Upload
levi-alvares-de-vieira
View
225
Download
2
Embed Size (px)
Citation preview
Estrutura de Dados
Aula 02
Estrutura de Dados Lista - Definição
Uma Estrutura de Dados Lista é um conjunto de dados dispostos e/ou acessáveis em uma seqüência determinada.▫ Este conjunto de dados pode possuir uma ordem
intrínseca (Lista Ordenada) ou não.▫ Este conjunto de dados pode ocupar espaços de
memória fisicamente consecutivos, espelhando a sua ordem, ou não.
▫ Se os dados estiverem dispersos fisicamente, para que este conjunto seja uma lista, ele deve possuir operações e informações adicionais que permitam que seja tratado como tal (Lista Encadeada).
Listas
20554128924
• A Lista é uma estrutura de dados cujo funcionamento é inspirado no de uma lista “natural”
• Uma lista pode ser Ordenada ou não.• Quando for ordenada, pode o ser por alguma
característica intrínseca dos dados (ex: ordem alfabética).
• Pode também refletir a ordem cronológica (ordem de inserção) dos dados).89
552420124
-1
Listas usando Vetores012345 • Vetores possuem um espaço
limitado para armazenamento de dados.
• Necessitamos definir um espaço grande o suficiente para a lista.
• Necessitamos de um indicador de qual elemento do vetor é o atual ultimo elemento da lista.
Listacheia
Listavazia
20554
128924
Modelagem da ListaAspecto Estrutural:
Necessitamos de um vetor para armazenar as informações.
Necessitamos de um indicador da posição atual do último elemento da lista.
Necessitamos de uma constante que nos diga quando a lista está cheia e duas outras para codificar erros.
Código para estrutura da listaconstantes Maxlista = 100;Inicio = 0
tipo Lista {inteiro dados[Maxlista];inteiro primeiro, ultimo;
};
Modelagem da Lista•Aspecto Funcional:
▫Colocar e retirar dados da lista.▫Testar se a lista está vazia ou cheia e outros
testes.▫Inicializa-la
Modelagem da Lista•Operações: Colocar e retirar dados da lista:
▫FLVazia(Lista) : Faz a lista ficar vazia▫Insere(x,Lista): Insere x após o último
elemento da lista▫Retira(p,Lista,x): Retorna o item x que está na
posição p retirando-o da lista e deslocando os itens a partir da posição p+1 para as posições anteriores
▫Vazia(): Testa se a lista está vazia▫Imprime(): Imprime os itens da lista na ordem
de ocorrência
Algoritmo FLVazia()FUNÇÃO FLVazia(Lista)início
Lista.primeiro <- Inicio;Lista.ultimo = Lista.primeiro
fim;
Algoritmo Vazia (Lista)inteiro FUNÇÃO Vazia(Vazia)início
SE (Lista.ultimo = Lista.primeiro) ENTÃORETORNE(Verdade)
SENÃORETORNE(Falso);
fim;
Algoritmo Insere•Procedimento:
▫Testamos se há espaço.▫Incrementamos o último.▫Adicionamos o novo dado.
•Parâmetros:▫O dado a ser inserido.▫Lista (global).
45
20554
128924
Algoritmo Insere(Item;Lista)Inteiro Insere(Item;Lista)
inícioSE (Lista.ultimo > MaxLista ) ENTÃO
IMPRIMA(“Lista Cheia”);SENÃO
Lista.ultimo <- Lista.ultimo + 1.Lista.dados[Lista.ultimo] <- dado;RETORNE(Lista.ultimo);
FIM SEfim;
Algoritmo Retira(pos;Lista;Item)•Procedimento:
▫Testamos se há elementos.▫Decrementamos o último.▫Devolvemos o último elemento.
•Parâmetros:▫Lista (global).
Algoritmo Retira(pos;Lista;Item)Inteiro retira(pos;Lista;Item)inteiro auxinício
SE (Vazia(Lista) OU pos > Lista.ultimo) ENTÃO IMPRIMA(“A lista esta vazia!”)
SENÃOItem<- Lista.dado[pos];Lista.ultimo <- Lista.ultimo - 1.PARA aux<-pos ATE lista.ultimo-1 FACA
lista.dado[aux] = lista.dado[aux+1];FIM SE
FIM;