Índice > Pilha > Alocação Estática Seqüencial

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 Estática Seqüencial


 
 

Definição da Estrutura de Dados
  Type
    pilha = array [1..maxp] of T;
    indice = 0 .. maxp;
  Var
    P: pilha;
    topo: indice;
 

-> Refazer as operações abaixo, para o caso da pilha ser definida da seguinte estrutura:

  Type
    aloc_pilha = array [1..maxp] of T;
    indice = 0 .. maxp;
    pilha = record
                        info: aloc_pilha;
                        topo: indice;
                      end;

  Var
    P: pilha;

Operações

1. criar (P) - criar uma pilha P vazia
  procedure criar (Var topo:indice);
  begin
    topo := 0;
  end;
2. inserir (x, P) - insere x no topo de P(empilha): push (x, P).
  procedure push (x:T; var P: pilha; Var topo: indice);
  begin
    if topo = maxp then
      "PILHA CHEIA"
      else
        begin
          topo := topo + 1;
          P[topo] := x;
        end
  end;
3. vazia (P) - testa se P está vazia
  function vazia (topo: indice): boolean;
  begin
    vazia := (topo = 0);
  end;
4. topo (P) - acessa o elemento do topo da pilha (sem eliminar)
  procedure top (Var topo_p: T; Var P:pilha; topo:indice);
  begin
    if vazia(topo) then 
      "PILHA VAZIA"
    else topo_p := P[topo];
  end;
5. elimina (P) - elimina o elemento do topo de P (desempilha): pop (P)
  procedure pop (Var topo:indice; Var P:pilha);
  begin
    if vazia(topo) then 
      "PILHA VAZIA"
    else topo = topo-1;
  end;
Devolve elemento eliminado
procedure pop_up (var P:pilha; 
                  var topo:indice):T;
  begin
    if vazia(topo) then 
      "PILHA VAZIA"
    else
      begin
        pop_up:= P[topo];  {no caso de acesso ao elemento}
        topo = topo-1;
      end;
  end;
-> Responda: do ponto de vista do TAD, qual das duas organizações de pilha exemplificadas acima
é a mais adequada? Justifique.

Alocação Dinâmica

Pilha