**

sexta-feira, 19 de outubro de 2012

Esquema e programa de Lista Ordenada

Esquema da Lista Ordenada, os elementos são ordenados  por ordem alfabética, por isso é que se chama "Listas Ordenadas", existe também a possibilidade de remover um elemento de qualquer lugar situado na lista.


Programa de Lista Ordenada






Program lista_ordenada;
Type lista=record 
Nome:string;
ponteiro:^lista;
End;
Var px,pii,p1,p2:^lista;
    escolha, OP:char;

Procedure inserir;      
 Begin
New(px);
Writeln('Introduza o nome');
Read(px^.nome);
px^.ponteiro:=pii;
pii:=px;   
 End;


Procedure listar;
Procedure ordenar;
Procedure remover;


 Begin 
px:=pii;
    If px=nil Then 
    Writeln('A lista está vazia')
Else
    Begin 
     Repeat 
  Writeln('Nome - ', px^.nome);
  px:=px^.ponteiro
  Until px=nil;
  End;
 End;

Var trocar: boolean;
aux:string;
 Begin
  P1:=PII;
  P2:=PII^.PONTEIRO; 
 If (pii <> nil) and (pii^.ponteiro <> nil) Then 
 repeat 
    trocar:=false;
    p1:=pii;
    p2:=pii^.ponteiro;
    repeat
      if p1^.nome>p2^.nome then 
        Begin 
        trocar:=true;
        aux:=p1^.nome;
        p1^.nome := p2^.nome;
        p2^.nome:=aux;
        End;
        p1:=p1^.ponteiro;
        p2:=p2^.ponteiro;
     Until p1^.ponteiro = nil;
Until not trocar
Else 
Begin 
If p1=nil then 
Writeln('Lista vazia');
If p1^.ponteiro=nil then 
Writeln('Só existem 1 elementos');
End;
End;

Var pa:^lista;dado:string;
 Begin
  If pii<>nil then
  Begin
    Writeln('Introduza o dado a eliminar');
    Read(dado);
    pa:=nil;
    px:=pii;
    While (px<>nil) and (px^.nome<>dado) do
Begin
pa:=px;
px:=px^.ponteiro;
End;
If px=nil then
Writeln(dado,' não se encontra na lista')
Else
Begin
If pa=nil then
pii:=px^.ponteiro
Else
pa^.ponteiro:=px^.ponteiro;
Dispose(px);
Writeln(dado,' foi removido da lista');
End;
End
Else
Writeln('Lista vazia');
End; 
 Begin 
pii:=nil;
repeat  
Writeln('1-Inserir');
Writeln('2-Listar');
Writeln('3-Sair');
Writeln('4-Apagar');
Writeln('Qual a opção?');
Readln(op); 
Case op of 
1:inserir;
2:listar;
4:remover;
end;
Writeln('Deseja continuar??');
Readln(escolha);
Until(escolha='N') or (escolha='n');
End.



                                                                                                 Breve reflexão sobre "Listas Ordenadas"

     As "Listas Ordenadas" são muito úteis por vários motivos, pois tem varias funções que são muito úteis para o dia-a-dia, tais como por exemplo bibliotecas, pois com este programa pode-se saber qual a organização alfabética que se deve colocar os livros, ou seja, insere todos os nomes dos livros e o programa faz uma organização alfabética e sempre que chegue um livro novo a biblioteca pode ser acrescentado à lista ou até eliminar um livro que não seja mais utilizado. 

Sem comentários:

Enviar um comentário