Programa da lista ordenada
Program lista_ordenada ;
type nada = string[20];
Tipo_A = ^Tipo_B;
Tipo_B = Record
info : Nada;
Prox : Tipo_A;
end;
Var pi : Tipo_A;
opcao,x : char;
Procedure Inserir;
Var px : Tipo_A;
Begin
New(px);
writeln('Inserira um nome');
Readln(px^.info);
px^.prox:=pi;
pi:=px;
Writeln('O dado foi introduzido com sucesso');
end;
Procedure Listar;
Var Px : Tipo_A;
Begin
Writeln;
px:=pi;
If (px=nil) then
Writeln('lista vazia')
else
begin
While(px<>nil) do
Begin
Writeln(px^.info);
px := px^.prox;
end;
end;
end;
Procedure Ordenar;
Var p1,p2:Tipo_A;
Trocar:boolean;
aux :nada;
Begin
p1:=pi;
p2:=pi^.prox;
If (p1<>nil) and (p1^.prox<>nil) then
repeat
Trocar:=false;
p1:=pi;
p2:=pi^.prox;
Repeat
If (p1^.info > p2^.info) then
Begin
Trocar:=true;
aux:=p1^.info;
p1^.info:=p2^.info;
p2^.info:=aux;
end;
p1:=p1^.prox;
p2:=p2^.prox;
until p1^.prox=nil;
until not trocar;
end;
Procedure Remover;
Var px:Tipo_A;
pa:Tipo_A;
dado:Nada;
begin
If pi<>nil then
begin
writeln('->Escreva o dado a excluir na lista');
readln(dado);
px:=pi;
pa:=nil;
While (px<>nil) and (px^.info<>dado) do
begin
pa:=px;
px:=px^.prox;
end;
If px = nil then
writeln('O dado nao se encontra na lista')
else
begin
If pa=nil then
pi:=px^.prox
else
begin
pa^.prox:=px^.prox;
dispose(px);
writeln(dado,'foi removido com sucesso');
end;
end;
end;
end;
begin
pi:=nil;
Repeat
writeln('____Menu____');
writeln;
writeln('Inserir ---> 1');
writeln('listar ---> 2');
writeln('Remover---> 3');
writeln('Sair--->0 ');
writeln('qual é a sua opção');
readln(opcao);
Case opcao of
'1':begin Inserir; Ordenar; end;
'2':Listar;
'3':Remover;
'0':writeln('Fim do programa');
end;
until (opcao='0');
end.