segunda-feira, 19 de novembro de 2012

Modulo 6


Estrturas Dinamicas (Ponteiros)

O que são ponteiros?





Um ponteiro apontador é um tipo especial de variável que é capaz de receber um enderenço de memória RAM relativo a um determinado tipo de dados (simples ou estruturado) e ficar como que a apontar para ele.



O que são Estruturas de Dados Dinâmicas?




Há três tipos de Estruturas de Dados Dinâmicas que são: Listas; árvores e grafos.


Neste caso apenas nos vamos concentrar nas Listas. Uma lista é simplesmente uma série de itens de informação de um determinado tipo. Existem três tipos de Listas que são os seguintes: Pilhas; Filas; Listas Ordenadas.







Pilha




Numa pilha, a inserção e a remoção de um elemento têm de ser feitas sempre no topo da estrutura. As pilhas são consideradas estruturas do tipo LIFO-Last In First Out, ou seja, o último a entrar é o primeiro a sair.








No programa que se segue tem as três operações possíveis na pilha: Inserir, Percorrer e remover.


Program Pilha ;
Type Pessoa = record            
            Nome:string;
              Prox:^Pessoa;
end;
Var  Top, Px:^Pessoa;
        Op:Integer;

Procedure Insere; 
Begin
              new(Px);
            writeln ('Escreva o nome da pessoa');
            Readln (Px^.Nome);
            Px^.prox:=Top;
            Top:=Px;
end;

Procedure Percorre;
Begin
            Px:=Top;
              If (Px=Nil) Then
                   writeln ('Pilha vazia')
              else
            begin
                   Repeat
                           writeln ('Nome:',Px^.Nome);
                           Px:=Px^.Prox;
                   Until (Px=Nil);
            end;
end;

Procedure Remove;
Begin
           If Top=Nil then
                      writeln ('Pilha vazia')
           else
             begin
                   Px:=Top;
                   writeln ('Elemento removido:',Px^.Nome);
                   Top:=Px^.Prox;
                   Dispose(Px);
           end;
end;                
                                                                                                         
 Begin
          Top:=Nil;
           Repeat
                        writeln;
                        writeln ('Escolha a operação');
                        writeln ('1-inserir');
                        writeln ('2-Percorrer');
                        writeln ('3-Remover');
                        readln (op);
                        Case op of
                                   1:Insere;
                                   2:Percorre;
                                   3:Remove;
                        end;
             until op=0;                    
End.

Para testar este programa ira ter que fazer o download do Pascalzim.
 Download do Pascalzim

1 comentário:

Deolinda Barbosa disse...

Carlos Nunes....onde estão as suas reflexões?....
Fundamental:
1- Retirar os josgos que não são da sua autoria...
2- Todos os módulos terão de estar bem divididos...
3- Reflexões por tarefa...
4- Alterar o fundo...ter em atenção ao fundo e ao respetivo conteúdo..

Contador de visitas