listas lineares listas lineares pilha fila fila dupla entrada restrita saída restrita
TRANSCRIPT
Listas lineares
Listas Lineares
Pilha Fila Fila Dupla
Entrada restrita Saída restrita
Listas linearesConjunto de elementos (nós) agrupados. Algumas Operações:
• Acesso a um determinado elemento
• Inserção de elementos
• Remoção de elementos
• Cópia de listas
• Combinação de listas
• Particionamento de listas
• Ordenação de listas
• Outras ...
Listas lineares
Alocação:
• Estática: durante compilação.
• Dinâmica: durante execução.Agrupamento:
• Seqüêncial: espaço contínuo de memória
• Encadeada: células dispersas na memória
Pilha
BASE
TOPO
SAÍDA
ENTRADA
Elemento 1
Elemento 2
Pilha
Operações primitivas:
• Inicializar a pilha: prepara a pilha para utilização, sem nenhum elemento.• Pilha Vazia: verifica se a pilha está vazia.• Pilha Cheia: verifica se a pilha está cheia.• Empilha Elemento: insere um elemento no topo da pilha.• Desempilha: retira o elemento do topo da pilha. • Topo: retorna o elemento do topo da pilha.
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
Atributos necessários para armazenar dados da classe:
• um vetor que armazenará os elementos empilhados
• uma variável de controle com a posição do topo da pilha
e uma com o número máximo de elementos da pilha.
public class Pilha{
private object [] elementos;private int topo, max;
...
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
• O vetor de elementos é do tipo object para que qualquer
objeto possa ser empilhado.
• Os atributos são privados pois os usuários da classe
não devem acessá-los diretamente, somente através dos
métodos de empilhar, desempilhar etc.
public class Pilha{
private object [] elementos;private int topo, max;
...
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
A inicialização da pilha é feita no seu construtor. Nesse momento, o usuário da classe deve informar a quantidade máxima de elementos para a alocação dinâmica.
public class Pilha{...
public Pilha(int maximo){
max = maximo;elementos = new object[max];topo = 0;
}...
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
O método para empilhar (Push) deve verificar se a pilha não está cheia, empilhar o elemento no vetor e incrementar o topo.
public class Pilha{...
public void Push(object x){
if (PilhaCheia())throw new Exception(“Pilha Cheia!”);
elementos[topo++] = x;}
...
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
O método para desempilhar (Pop) deve verificar se a pilha não está vazia, desempilhar o elemento no vetor e decrementar o topo.
public class Pilha{...
public object Pop(){
if (PilhaVazia())throw new Exception(“Pilha Vazia!”);
return elementos[--topo];}
...
Pilhas – Implementação (alocação dinâmica, agrupamento seqüencial)
• Implemente as funções restantes: pilha vazia, pilha cheia e função topo.
• Simule o funcionamento da pilha com este exemplo de código:
...Pilha p = new Pilha(10);p.Push(1);p.Push(2);p.Push(3);int x = Convert.ToInt32(p.Pop());...