Escolar Documentos
Profissional Documentos
Cultura Documentos
Listas lineares
• Relação de ordem
INFORMAÇÕES
• Linear - seqüencial
Número RG Nome Nasc. Cargo
Estruturas de Dados - Listas Lineares Estruturas de Dados - Listas Lineares
Estrutura dos nodos Definição matemática
Uma lista linear é uma coleção de n ≥ 0 nodos
x[1], x[2], ... , x[n], cujas propriedades estruturais
relevantes envolvem apenas as posições relativas
lineares dos nodos:
• n = 0 lista vazia
• Lista linear : seqüência de 0 ou mais nodos do mesmo tipo
Estruturas de Dados - Listas Lineares Estruturas de Dados - Listas Lineares
L1 L2 L3 L4 L5 L6 Ln • Operações
– ?????
1 2 3 4 5 6 n
LL
Arranjo
1 2 3 4 5 k-1 k N-1 N
LL
IniL1 FimL1 IniL2 FimL2
L1 L2 L3 Lm-1 Lm
Início Fim
Estruturas de Dados - Listas Lineares Estruturas de Dados - Listas Lineares
Criação de uma lista linear Ex: Lista de informações de produtos de uma empresa
implementada sobre um arranjo
TipoNodo = registro
• declarar o arranjo Nome: string;
Código: inteiro;
• inicializar variáveis que guardam início e final da lista Preço: real
fim registro;
TipoLista = arranjo [1 .. N] de TipoNodo
Arranjo X [ 1 .. N ] 1 2 3 4 5 N-1 N
Ini = Fim = 0
Proc InicializarLLArranjo (var IniLista,FimLista: inteiro);
Lista vazia início
IniLista := 0 ; FimLista := 0 ;
0 1 2 3 M fim InicializarLLArranjo;
Ini = Fim = -1
Acessar o “k-ésimo” nodo de uma lista Procedimento para consultar o “k-ésimo” nodo
1 2 3 4 5 k-1 k N-1 N
L1 L2 L3 Lm-1 Lm
1 2 3 4 5 k-1 k N-1 N
L1 L2 L3 Lm-1 Lm
• Dados
– type Lista = array [1..n] of Info;
Início K=3 Fim
– início e final da lista
– tamanho do arranjo (ou início e final do arranjo)
• Operações Proc ConsultarK (LL: TipoLista; K, Ini, Fim: inteiro;
– procedure inicializa (var ini, fim : integer); var Sucesso: lógico; var InfoNodo: TipoNodo);
// inicializa com zeros o início e o fim da lista início
– insere(???): Insere um nodo na k-ésima posição da lista se K < 0 { antes do primeiro nodo da lista }
– remove(???): Remove o k-ésimo nodo da lista ou K > Fim - Ini + 1 { depois do último nodo da lista }
– function consulta (x: Lista; ini, fim: integer; val:Info): integer; ou Ini = 0 { lista vazia }
// devolve a posição (o índice no arranjo) do nodo para o qual o campo então Sucesso := Falso
valor é igual ao valor buscado (val) senão início
– Destroi(???): destrói a lista Infonodo := LL [ Ini + K - 1];
Sucesso := Verdadeiro
fim
fim ConsultarK;
Estruturas de Dados - Listas Lineares Estruturas de Dados - Listas Lineares
L1 L2 L3 L4 L5 L6
K=1
1 2 3 4 5 6 7 8 N-1 N 5
1 2 3 4 6 7 8 N-1 N
L1 L2 L3 L4 L5 L6 • Ex: 33
70 70
40 40
20 20
90 90
80 80
1 2 3 4 5 6 7 8 N-1 N 5
1 2 3 4 6 7 8 N-1 N
L1 L2 L3 L4 L5 L6 L4 L5 L6
L1 L2 L3
K=6 K=3
Início Fim