Académique Documents
Professionnel Documents
Culture Documents
Outubro 2004
Estruturas de dados lineares
de comprimento variável
• Pilhas (stacks)
• Filas (queues)
- Filas simples
- Filas Circulares
Pilha (stack)
Estrutura de dados de comprimento variável, cujas caracteristicas
principais são as seguintes:
Elementos disponíveis
Inserção Eliminação
X
Topo da pilha
X
X
Elementos usados
Base da pilha
Representação de Pilhas (stacks)
Vector S que
S[N] simula a pilha
Rotina de inserção
Função de remoção
Função de pesquisa
Rotina de alteração
Fila (Queue)
Estrutura de dados de comprimento variável com as seguintes
características:
Eliminação X X X
Inserção
Elementos disponíveis
Elementos usados
Representação de Filas
Eliminação X X X X
Inserção
F R
Os ponteiros F e R apontam respectivamente
para o elemento da frente e para o elemento da
retaguarda da fila
Filas – Algoritmos
Rotinas e Funções de manipulação
Rotina de inserção
Função de eliminação
Fila circular
De modo a optimizar o armazenamento de dados e respectiva gestão
de espaço na memória principal do computador, as filas circulares
seguem os mesmos princípios das filas simples, mas têm uma gestão
mais eficaz em termos de armazenamento.
Representação de filas circulares
R Retaguarda da fila
Q[4]
... Q[3]
Q[N-2]
Q[2]
Q[N-1]
Q[1]
Q[N]
F Frente da fila
Rotina de inserção
Características Principais
A estrutura principal de uma lista designa-se por NODO a qual representa uma
estrutura de dados composta por um ou mais campos de informação (INFO) e
por um ou mais campos de ligação (ELO).
NODO
INFO ELO
Exemplo
INFO ELO
11 17 7
PRIM
DISP NOVO
NOVO DISP
DISP ELO[DISP]
DISP
.. ..
. .
PRIMEIRO
Variável ponteiro que representa o endereço do primeiro nodo da lista linear simplesmente
encadeada.
DISP
Variável ponteiro que representa o endereço do nodo do topo da pilha dos disponíveis.
NOVO
Variável ponteiro que representa o endereço a obter referente ao próximo nodo disponível
(nodo do topo da pilha de disponíveis). Endereço de um novo nodo para uma lista.
NULO
Variável ponteiro que representa o endereço nulo.
LISTAS – Algoritmos
Rotinas e Funções de manipulação
Eliminação de nodos
1. [Lista vazia?]
If PRIM = NULO
Then Write (‘Lista vazia’)
Return
2. [Pesquisar o endereço E]
Do While PTEMP <> E and ELO[PTEMP] <> NULO
ANT ß PTEMP
PTEMP ß ELO[PTEMP]
3. [Fim da lista?]
If PTEMP <> E
Then Write (‘O Nodo com endereço ’,E,’ não existe’)
Return
4. [Eliminação do nodo]
If PTEMP = PRIMEIRO
Then PRIM ß ELO[PRIM]
Else ELO[ANT] ß ELO[PTEMP]
5. [Devolver o nodo eliminado à pilha de disponíveis]
ELO[PTEMP] ß DISP
DISP ß PTEMP
Return
LISTAS – Algoritmos
Rotinas e Funções de manipulação
Procedure Delete (X,PRIM)
Rotina que permite eliminar um nodo que contem a informação dada pela variável X. PTEMP e
ANT são variáveis ponteiro temporárias. O nodo eliminado é devolvido à pilha de disponíveis.
1. [Lista vazia?]
If PRIM = NULO
Then Write (‘Lista vazia’)
Return
2. [Pesquisar o nodo que contem X]
Do While INFO[PTEMP] <> X and ELO[PTEMP] <> NULO
ANT ß PTEMP
PTEMP ß ELO[PTEMP]
3. [Fim da lista?]
If INFO[PTEMP] <> X
Then Write (‘O Nodo com INFO igual a ’,X,’ não existe’)
Return
4. [Eliminação do nodo]
If PTEMP = PRIMEIRO
Then PRIM ß ELO[PRIM]
Else ELO[ANT] ß ELO[PTEMP]
5. [Devolver o nodo eliminado à pilha de disponíveis]
ELO[PTEMP] ß DISP
DISP ß PTEMP
Return