Estruturas de Dados Avan ados
Dentre as principais estruturas de dados avançadas temos: pilhas, filas, listas e árvores. Estas estruturas armazenam dados e são manipuladas por funções básicas do tipo: cria, insere, elimina, consulta e altera.
As mesmas podem ser implementadas tanto da forma estática quanto da forma dinâmica.
Pilha
Uma pilha pode ser vista como um local onde são inserido dados um sobre o outro, sendo sempre inserido sobre o último da pilha (topo da pilha). Para retirarmos os dados, devemos também respeitar a ordem pelo qual eles foram inseridos, ou seja, retirando somente o último elemento do topo. Este tipo de estrutura é também conhecida como LIFO (“Last In First Out” = “Último a Entrar é o Primeiro a Sair”) ou
FILO (“First In Last Out” = “Primeiro a Entrar é o Último a Sair”).
As estruturas de pilha são comumente usadas em algoritmos de gerenciamento de memória (escopo de variáveis e retorno de procedimentos), compiladores e em outras aplicações.
Quando uma pilha é criada, não existe nenhum elemento inserido e dizemos que ela está vazia, podendo ser estática ou dinâmica.
Fila
É um tipo de lista linear em que a inserção é feita numa extremidade e a eliminação na outra. Conhecida como estrutura FIFO (First In ,First Out), podendo ser seqüencial ou encadeada.
Pelas suas características, as filas têm as eliminações feitas no seu início e as inserções feitas no seu final. A implementação encadeada dinâmica torna mais simples as operações (usando uma lista de duas cabeças). Já a implementação seqüencial é um pouco mais complexa (podendo ser utilizado o conceito de fila circular), onde pode ser usada quando há previsão do tamanho máximo da fila.
Exemplos: escalonamento de "Jobs": fila de processos aguardando os recursos do sistema operacional; fila de pacotes a serem transmitidos numa rede de comutação de pacotes; simulação - fila de caixa em banco.
Lista Circular
Lista é uma estrutura onde os dados são inseridos em qualquer posição, em