Escolar Documentos
Profissional Documentos
Cultura Documentos
Uma fila (queue) tipicamente estabelece uma política FIFO -- first in, first out -- de
acesso aos dados. Em outras palavras, a ordem estabelecida na lista é a ordem de
inserção. No momento de retirar um nó da lista, o nó mais antigo (o primeiro que
entrou) é o primeiro a ser retirado.
Como as políticas de inserção e remoção são pré-definidas, para esse tipo de estrutura as
operações são descritas de forma genérica, INSERT e REMOVE. Há duas possibilidades
para implementar as operações de uma fila usando os procedimentos descritos para
listas:
Uma estrutura de pilha (stack), por outro lado, estabelece uma política LIFO -- last in,
first out. Uma estrutura de pilha também oferece basicamente duas operações de
manipulação, PUSH, para inserção no topo da pilha, e POP, para retirada do topo da
pilha.
Embora também fosse possível implementar uma pilha através de lista usando os
procedimentos que acrescentam e removem os nós no final da lista, por razões óbvias de
desempenho uma pilha é usualmente implementada usando os procedimentos INSERT e
REMOVEFIRST, que não requerem a varredura da lista para estabelecer essa política de
manipulação de dados.
Manipulação de lista
A informação sobre a estrutura de uma lista ligada está distribuída ao longo de seus nós.
Assim, a única informação adicional requerida para manter a lista é a especificação de
seu nó descritor:
top : NODE
LIST
Na criação de uma lista, o nó descritor está inicialmente vazio, de forma que seu campo
next tem o valor nulo. Assim, um procedimento para verificar se a lista está vazia deve
verificar o valor desse campo. Esse procedimento está descrito no Algoritmo 2.8.
Para a inserção de um novo nó em uma lista há duas possibilidades que podem ser
consideradas, dependendo da opção de se inserir o novo nó no início (antes do primeiro
elemento) ou no final (após o último elemento) da lista.
Outro procedimento usual na manipulação de uma lista ligada é aquele que permite
procurar o nó que satisfaz um determinado critério de busca -- por exemplo, cuja chave
em seu campo de informação seja igual a um argumento fornecido. Esse procedimento
de busca é apresentado através do Algoritmo 2.13, que retorna uma referência para o
campo de informação do nó encontrado ou o valor nulo se não for encontrado nenhum
nó que satisfaça a condição de busca.
Como se observa nesse caso, a varredura de uma lista em busca de uma dada chave é
um procedimento seqüencial, similar em conceito à busca linear. Essa é a contra-partida
à flexibilidade de manipulação de uma lista -- não há como realizar uma busca binária,
por exemplo, nesse tipo de estrutura. Assim, o procedimento deve analisar a lista nó a
nó até encontrar o elemento procurado.