Ajuda em transformar esse algoritmo em uma lista tipo lista(fifo)

1. Ajuda em transformar esse algoritmo em uma lista tipo lista(fifo)

avelino sestito filho
av_mrg

(usa Outra)

Enviado em 25/01/2017 - 14:02h

{Lista dinamicamente encadeada simples, com apenas um ponteiro para cada no.}

Program Lista_dinamica;
uses crt;

Type

tp_pessoa = record
chave: integer;
nome: string[20];
idade: integer;
{outros campos}
prox: ^tp_pessoa;
end;

ponteiro = ^tp_pessoa;

tp_lista = record
primeiro: ^tp_pessoa;
ultimo: ^tp_pessoa;
end;
Var
y:= ^tp_pessoa;
z:= ^tp_pessoa;
p: ^tp_pessoa;
pessoa_aux: tp_pessoa;
codigo: integer;
op: char;
Lista_real: tp_lista;

{Cria lista vazia}

Procedure Cria_lista(Var Lista: tp_lista);
Begin
new(Lista.primeiro);
Lista.ultimo:=Lista.primeiro;
Lista.ultimo^.prox:=nil;
End;

{Verifica se a lista esta vazia}

Function Vazia(Lista: tp_lista): boolean;
Begin
If Lista.ultimo=Lista.primeiro then
Vazia:=true
else
Vazia:=false;
End;

{Insere item na lista}

Procedure Insere (x: tp_pessoa; var Lista: tp_lista);
Begin
new(Lista.ultimo^.prox);
Lista.ultimo:=Lista.ultimo^.prox;
Lista.ultimo^:=x;
Lista.ultimo^.prox:=nil;
End;

{Encontra o endereco de um item a partir do seu codigo}

Function Localiza (cod: integer; Lista: tp_lista): ponteiro;
Var
paux: ponteiro; {ou paux: ^tp_pessoa;}
Begin
paux:=Lista.primeiro;
while ((paux^.prox<>nil)and(paux^.prox^.chave<>cod)) do
paux:=paux^.prox;
Localiza:=paux;
End;

{ Remove item da lista
Obs.: o item a ser retirado e o seguinte ao apontado por p }

Procedure Remove (p: ponteiro; Var Lista: tp_lista);
Var
q: ^tp_pessoa;
Begin
if ((Vazia(Lista)) or (p^.prox=nil)) then
writeln ('Erro: lista vazia ou item inexistente.')
else
begin
q:=p^.prox;
p^.prox:=q^.prox;
if (p^.prox=nil) then
Lista.ultimo:=p;
dispose(q);
end;
End;

{ Imprime os itens da lista }

Procedure Imprime (Lista: tp_lista);
Var
aux: ponteiro; {ou aux: ^tp_pessoa;}
i: integer;
Begin
i:=1;
aux:=Lista.primeiro^.prox;
while (aux<>nil) do
begin
writeln ('Codigo do item ',i,': ',aux^.chave);
writeln ('Nome do item ',i,': ',aux^.nome);
writeln ('Idade do item ',i,': ',aux^.idade);
i:=i+1;
aux:=aux^.prox;
writeln;
end;
End;


Begin
clrscr;
Cria_lista(Lista_real);
repeat
writeln ('Escolha uma opcao: ');
writeln (' 1 - Verifica se a lista esta vazia;');
writeln (' 2 - Insere item na lista;');
writeln (' 3 - Remove itens da lista;');
writeln (' 4 - Imprime itens da lista;');
writeln (' 0 - Sair;');
readln(op);
case op of
'1': begin
if Vazia(Lista_real) then
writeln ('Lista vazia!')
else
writeln ('Lista nao vazia!');
end;
'2': begin
write ('Digite um codigo para a pessoa: ');
readln(pessoa_aux.chave);
write ('Digite o nome da pessoa: ');
readln(pessoa_aux.nome);
write ('Digite a idade da pessoa: ');
readln(pessoa_aux.idade);
Insere(pessoa_aux, Lista_real);
end;
'3': begin
write ('Remoção com sucesso: ');
readln (codigo);
y:=Lista_real.Primeiro^.prox^.prox;
z:=y;
Lista_real.ultimo^.prox:=z;
codigo:=Lista_real.Primeiro^.chave;
p:=Localiza(codigo, Lista_real);
if p=nil then
writeln ('Remocao impossivel, codigo nao cadastrado!')
else
Remove(p, Lista_real);
end;
'4': begin
Imprime(Lista_real);
end;
else writeln ('Opcao invalida.');
end;
until op='0';
end.



  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts