Type pessoa=record
nome:string[15];
prox:^pessoa;
end;
var pi,px:^pessoa;
x,z:char;
Procedure Inserir;
Begin
new(px);
writeln('Escrever o dado a inserir na lista');
Readln(px^.nome);
px^.prox:=pi;
pi:=px;
end;
Procedure Listar;
Begin
px:=pi;
If (px=nil) then
writeln('Lista está vazia')
else
While (px<>nil) do
begin
writeln(px^.nome);
px:=px^.prox;
end;
end;
Procedure Ordenar;
var p1,p2:^pessoa;
trocar: boolean;
aux:string[15];
begin
If (pi<>nil) and (pi^.prox<>nil) then
Repeat
trocar:=false;
p1:=pi;
p2:=pi^.prox;
Repeat
If (p1^.nome> p2^.nome) then
Begin
trocar:=true;
aux:=p1^.nome;
p1^.nome:=p2^.nome;
P2^.nome:=aux;
end;
p1:=p1^.prox;
p2:=p2^.prox;
Until p1^.prox=nil;
Until not trocar
Else
Writeln('A lista está vazia ou tem apenas um elemento');
end;
Procedure Remover;
var px,pa:^pessoa;
dado:String[15];
begin
if pi<>nil then
begin
write('Escrever o dado a remover da lista:');
readln(dado);
px:=pi;
pa:=nil;
while (px<>nil) and (px^.nome<>dado) do
begin
pa:=px;
px:=px^.prox;
end;
If px=nil then
Writeln(dado,'nao se encontra na lista')
else
begin
If pa=nil then
pa:=px^.prox
else
pa^.prox:=px^.prox;
dispose(px);
Writeln(dado,'foi removido da lista');
end;
end;
end;
// Programa Principal
Begin
pi:=nil;
Repeat
writeln;
writeln;
textcolor(green);
Writeln('*********MENU*********');
Writeln;
textcolor(brown);
Writeln('1 - Para Inserir dados');
Writeln;
Writeln;
Writeln('2 - Para Listar dados');
Writeln;
Writeln;
Writeln('3 - Para Ordenar dados');
Writeln;
Writeln;
Writeln('4 - Para Remover dados');
Writeln;
Writeln;
Writeln('0 - Para Sair');
Readln(x);
Case x of
'1':Inserir;
'2':Listar;
'3':Ordenar;
'4':Remover;
end;
Until (x='0');
End.
Program Fila;
Type Dados = record
nome:string[20];
idade:integer;
peso:real;
prox:^Dados;
end;
var cauda, px, frente:^Dados;
z:char;
y:integer;
Procedure Inserir_Dados;
begin
new(px);
writeln('nome:');
readln(px^.nome);
writeln('idade:');
readln(px^.idade);
writeln('peso:');
readln(px^.peso);
if frente = nil then
begin
cauda:=px;
frente:=px;
end
else
begin
frente^.prox:=px;
frente:=px;
end;
end;
Procedure Apresentar;
begin
px:=frente;
repeat
if frente = nil then
writeln('Fila vazia')
else
begin
writeln('Nome: ',px^.nome);
writeln('Idade: ',px^.idade);
writeln('Peso: ',px^.peso);
px:=px^.prox;
end;
until px=nil;
end;
Procedure Remover;
begin
if frente = nil then
writeln('Fila vazia')
else
begin
px:=frente;
frente:=px^.prox;
dispose(px);
writeln('Dado removido');
end;
end;
Begin {Programa principal}
px:=nil;
Repeat
writeln('1- para introduzir dados');
writeln('2- para mostrar dados');
writeln('3- para eliminar');
writeln('Qual a opção?');
read(y);
Case y of
1:Inserir_dados;
2:Apresentar;
3:remover;
end;
writeln('Deseja continuar? (S ou N)');
readln(z);
Until z='N';
End.
Type Dados = record
nome:string[20];
idade:integer;
peso:real;
prox:^Dados;
end;
var cauda, px, frente:^Dados;
z:char;
y:integer;
Procedure Inserir_Dados;
begin
new(px);
writeln('nome:');
readln(px^.nome);
writeln('idade:');
readln(px^.idade);
writeln('peso:');
readln(px^.peso);
if frente = nil then
begin
cauda:=px;
frente:=px;
end
else
begin
frente^.prox:=px;
frente:=px;
end;
end;
Procedure Apresentar;
begin
px:=frente;
repeat
if frente = nil then
writeln('Fila vazia')
else
begin
writeln('Nome: ',px^.nome);
writeln('Idade: ',px^.idade);
writeln('Peso: ',px^.peso);
px:=px^.prox;
end;
until px=nil;
end;
Procedure Remover;
begin
if frente = nil then
writeln('Fila vazia')
else
begin
px:=frente;
frente:=px^.prox;
dispose(px);
writeln('Dado removido');
end;
end;
Begin {Programa principal}
px:=nil;
Repeat
writeln('1- para introduzir dados');
writeln('2- para mostrar dados');
writeln('3- para eliminar');
writeln('Qual a opção?');
read(y);
Case y of
1:Inserir_dados;
2:Apresentar;
3:remover;
end;
writeln('Deseja continuar? (S ou N)');
readln(z);
Until z='N';
End.
Program Pilha ;
Type Dados=record
nome:string;
idade:integer;
prox:^dados;
end;
Var p1, px:^Dados;
y,x:integer;
aux:^Dados;
z:char;
Procedure Inserir_dados;
begin
new(px);
writeln('nome:');
readln(px^.nome);
writeln('Idade:');
readln(px^.idade);
px^.prox:=p1;
p1:=px;
end;
Procedure Listar;
begin
Repeat
writeln('Nome:',px^.nome);
writeln('Idade:',px^.idade);
px:=px^.prox;
Until px=nil;
end;
Procedure Apagar;
begin
aux:=px^.prox;
dispose(px);
px:=aux;
p1:=aux;
writeln('Dado removido');
end;
Begin
p1:=nil;
Repeat
writeln('1- para introduzir dados');
writeln('2- para mostrar dados');
writeln('3- para eliminar');
writeln('Qual a opção?');
read(y);
Case y of
1:Inserir_dados;
2:Listar;
3:Apagar;
end;
writeln('Deseja continuar? (S ou N)');
readln(z);
Until z='N';
End.
Reflexão
A pilha, a fila e as listas ordenadas são estruturas de dados dinâmicos. a pilha LIFO, First In Last Out, a fila FIFO, First In First Out e na lista ordenada pode ser removido qualquer campo



Sem comentários:
Enviar um comentário