Array
(
)

ESTRUTURA DE DADOS > PONTEIROS

Dannyou
|
MVP
    13 set 2017

Tenho duas listas, L1 e L2, onde insiro dados na L1 e L2, L2 é limitada a quantidade de registros que fiz em L1... Essa parte consegui fazer, mas preciso salvar em uma terceira lista L3, em ordem crescente de chave os dados que inseri na L1 E L2... Alguém me da um help porque não tô conseguindo... =(

Program Pzim ;
type
Ptr = ^TLista;
TLista = Record
Nome: String;
Chave: String;
Prox: Ptr;
end;
var
Primeiro, Ultimo, L1, L2, L3: Ptr;
Nome, Chave: String;
MN, I: integer;
procedure coloca(Nome, Chave: String);
begin
new(L1);
L1^.Nome := Nome;
L1^.Chave := Chave;
L1^.Prox := nil;
if Primeiro = nil then
Primeiro := L1
else
Ultimo^.Prox := L1;
Ultimo := L1;
end;
procedure coloca1(Nome, Chave: String);
begin
new(L2);
L2^.Nome := Nome;
L2^.Chave := Chave;
L2^.Prox := nil;
if Primeiro = nil then
Primeiro := L2
else
Ultimo^.Prox := L2;
Ultimo := L2;
end;
procedure coloca2(Nome, Chave: String);
begin
new(L3);
L3^.Nome := Nome;
L3^.Chave := Chave;
L3^.Prox := nil;
if Primeiro = nil then
Primeiro := L3
else
Ultimo^.Prox := L3;
Ultimo := L3;
end;
procedure lerid; // Ler identidade
var
MM: String;
begin
While (MM <> 'N') do
begin
writeln('Informe seu nome: ');
readln(Nome);
writeln('Informe sua chave: ');
readln(Chave);
coloca(Nome, Chave);
I := I + 1;
writeln('Deseja Cadastrar outro usuario? (S/N)');
readln(MM);
end;
End;
procedure cadastro2; //SALVANDO NA LISTA L2
var
J, L: integer;
begin
For J := 1 to I do
begin
writeln('Informe seu nome: ');
readln(Nome);
writeln('Informe sua chave: ');
readln(Chave);
L := L + 1;
coloca1(Nome, Chave);
end;
I := I + L;
end;
procedure mostra; // TENTANDO POR EM ORDEM CRESCENTE DE CHAVE
var
aux: Ptr;
T: integer;
begin
aux := Primeiro;

For T := 1 to I do
begin
if (L1^.Chave < L2^.Chave) then
begin
L3^.Chave := L1^.Chave;
L3^.PROX := NIL;



end;
END;

for T:= 1 to I do
begin
if (aux <> nil) then
begin
writeln;
writeln('#####################################');
writeln('# Usuario encontrado: ', aux^.Nome);
writeln('# CHAVE do maluco: ', aux^.Chave);
writeln('####################################');
writeln;
aux := aux^.Prox;
end;
end;
end;
Begin
Primeiro := Nil;
Ultimo := Nil;
repeat
writeln('(1) Cadastrar Usuario ');
writeln('(2) Cadastrar segunda estrutura de usuarios ');
writeln('(3) Mostrar');
writeln('(0) Sair');
readln(MN);
case MN of
1:
lerid;
2:
cadastro2;
3:
mostra;
end;
if (MN <> 1) and (MN <> 2) and (MN <> 3) and (MN <> 0) then
begin
writeln('Opcao invalida');
end;
until MN = 0;
end.

Edsrp
   - 19 set 2017

ta meio confuso seu código, o que deseja fazer exatamente? essa lista vc carrega de um arquivo texto ?