O Exemplo a baixo é um fila, que utiliza apontadores para realizar as operações.
program fila;
uses crt;
type
apontador = ^celula;
celula = record
item:integer;
prox:apontador;
end;
tipofila=record
frente:apontador;
tras:apontador;
end;
procedure iniciafila(var fila:tipofila);
var
aux:apontador;
begin
new (aux);
fila.frente:=aux;
fila.tras:=fila.frente;
fila.tras^.prox :=nil;
end;
function vazia(fila:tipofila):boolean;
begin
vazia:=fila.frente = fila.tras;
end;
procedure inserir(x:integer;var fila:tipofila);
var aux:apontador;
begin
new (aux);
fila.tras^.prox:=aux;
aux^.prox := nil;
aux^.item :=x;
fila.tras := aux;
end;
procedure imprimir(fila:tipofila);
var aux:apontador;
begin
aux := fila.frente^.prox;
while ( aux <> nil ) do begin
writeln(aux^.item);
aux:=aux^.prox;
end;
end;
procedure retirar(var x:integer; var fila:tipofila);
var
aux:apontador;
begin
aux:=fila.frente^.prox;
x:=aux^.item;
fila.frente^.prox := aux^.prox;
if (fila.frente^.prox = nil ) then fila.tras := fila.frente;
dispose(aux);
end;
procedure media(l:tipofila; var media:real);
var
aux:apontador;
b:integer;
begin
aux:=l.frente;
media:=0;
b:=0;
while aux^.prox <> nil do begin
aux:=aux^.prox;
media:=media+aux^.item;
b:=b+1;
end;
media:=media/b;
end;
procedure quantidade(l:tipofila; var qtde:integer);
var
aux:apontador;
b:integer;
begin
aux:=l.frente;
while aux^.prox <> nil do begin
aux:=aux^.prox;
qtde:=qtde+1;
end;
end;
var
elem:integer;
f:tipofila;
qtde:integer;
opc:integer;
n:integer;
soma:integer;
m:real;
{ Programa principal }
begin
iniciafila(f);
repeat
writeln(' 1 - Inserir ');
writeln(' 2 - Retirar ');
writeln(' 3 - Imprimir ');
writeln(' 4 - Media Aritim‚tica ');
writeln(' 5 - Quantidade de elementos ');
writeln(' 6 - Sair');
writeln(' 0 - limpar a tela');
readln(opc);
case opc of
1 :begin
writeln('Entre com o elemento a ser inserido');
readln(elem);
inserir(elem,f);
end;
2 :begin
if vazia(f) then writeln('A fila est vazia, impossivel retirar elemento !')
else begin
retirar(elem,f);
writeln('O elemento', elem , 'foi removido da fila');
end;
end;
3:begin
writeln('Elementos do fila');
imprimir(f);
end;
4 :begin
media(f,m);
writeln('A media ‚ ',m:3:2);
end;
5 :begin
quantidade(f,qtde);
writeln('A quantidade de elementos ‚:', qtde );
end;
6: writeln('Saindo do programa');
0:clrscr;
end;
until opc=6;
end.
Use o Free Pascal ou o Turbo Pascal pra compilar isso.
program fila;
uses crt;
type
apontador = ^celula;
celula = record
item:integer;
prox:apontador;
end;
tipofila=record
frente:apontador;
tras:apontador;
end;
procedure iniciafila(var fila:tipofila);
var
aux:apontador;
begin
new (aux);
fila.frente:=aux;
fila.tras:=fila.frente;
fila.tras^.prox :=nil;
end;
function vazia(fila:tipofila):boolean;
begin
vazia:=fila.frente = fila.tras;
end;
procedure inserir(x:integer;var fila:tipofila);
var aux:apontador;
begin
new (aux);
fila.tras^.prox:=aux;
aux^.prox := nil;
aux^.item :=x;
fila.tras := aux;
end;
procedure imprimir(fila:tipofila);
var aux:apontador;
begin
aux := fila.frente^.prox;
while ( aux <> nil ) do begin
writeln(aux^.item);
aux:=aux^.prox;
end;
end;
procedure retirar(var x:integer; var fila:tipofila);
var
aux:apontador;
begin
aux:=fila.frente^.prox;
x:=aux^.item;
fila.frente^.prox := aux^.prox;
if (fila.frente^.prox = nil ) then fila.tras := fila.frente;
dispose(aux);
end;
procedure media(l:tipofila; var media:real);
var
aux:apontador;
b:integer;
begin
aux:=l.frente;
media:=0;
b:=0;
while aux^.prox <> nil do begin
aux:=aux^.prox;
media:=media+aux^.item;
b:=b+1;
end;
media:=media/b;
end;
procedure quantidade(l:tipofila; var qtde:integer);
var
aux:apontador;
b:integer;
begin
aux:=l.frente;
while aux^.prox <> nil do begin
aux:=aux^.prox;
qtde:=qtde+1;
end;
end;
var
elem:integer;
f:tipofila;
qtde:integer;
opc:integer;
n:integer;
soma:integer;
m:real;
{ Programa principal }
begin
iniciafila(f);
repeat
writeln(' 1 - Inserir ');
writeln(' 2 - Retirar ');
writeln(' 3 - Imprimir ');
writeln(' 4 - Media Aritim‚tica ');
writeln(' 5 - Quantidade de elementos ');
writeln(' 6 - Sair');
writeln(' 0 - limpar a tela');
readln(opc);
case opc of
1 :begin
writeln('Entre com o elemento a ser inserido');
readln(elem);
inserir(elem,f);
end;
2 :begin
if vazia(f) then writeln('A fila est vazia, impossivel retirar elemento !')
else begin
retirar(elem,f);
writeln('O elemento', elem , 'foi removido da fila');
end;
end;
3:begin
writeln('Elementos do fila');
imprimir(f);
end;
4 :begin
media(f,m);
writeln('A media ‚ ',m:3:2);
end;
5 :begin
quantidade(f,qtde);
writeln('A quantidade de elementos ‚:', qtde );
end;
6: writeln('Saindo do programa');
0:clrscr;
end;
until opc=6;
end.
Use o Free Pascal ou o Turbo Pascal pra compilar isso.