Índice > Pilha > Alocação Dinâmica

Instituto de Ciências Matemáticas de São Carlos 
Departamento de Computação e Estatística 
SCE182 - Algoritmos e Estruturas de Dados 1 
Profs. Resp.: Graça Pimentel e Maria Cristina

Alocação Dinâmica

Definição da Estrutura de Dados
  Type
    tpont     = ^reg_pilha;
    pilha     = tpont;
    reg_pilha = record
                  info: T;
                  lig: tpont;
                End;

  Var p: pilha;
Obs: p aponta o topo.

Operações

-> Fazer  a  documentação de cada operação, incluindo pré e pós-condições.
 

1. criar (P) - criar uma pilha P vazia

  procedure criar (var p: pilha);
  begin
    p := nil;
  end;
2. inserir (x, P) - insere x no topo de P (empilha): push(x,P)
  procedure push (x:T; var p: pilha);
  var pont: pilha;
    begin
      new(pont);
      pont^.info := x;
      pont^.lig := p;
      p := pont;
    end;
3. vazia (P) - testa se P está vazia
  function vazia (var p: pilha): boolean;
  begin
    vazia := (p = nil);
  end;
4. topo (P) - acessa o elemento do topo da pilha (sem eliminar), supondo que existe pelo menos um elemento na
pilha.
  function top (var p: pilha): T;  {supondo possível}
  begin
    top := p^.info;
  end;
5. elimina (P) - elimina o elemento do topo de P (desempilha) se não estiver vazia: pop(P)
  procedure pop(var p: pilha);
  begin
    p := p^.lig;
    dispose(p); 
  end;
-> Codifique a operação de destruição da pilha.
-> Incluir operações que tratem possíveis condições de exceções. Depois disso, responda: Quais operações estariam
'visíveis' para o usuário num TAD corretamente implementado?

Exercícios

Pilha