Que tal comunidad, se me presento un problema a la hora de asignar y comparar un puntero con el valor nil.. me sale la excepcion "EAccessViolation" cuando se ejecutan las lineas en rojo, seguramente haya mas "EAccessViolation" pero si resuelvo esas dos resuelvo todos..
Codigo:
Código Delphi
[-]unit Cola;
interface
type
TDataCola = String;
PNodoCola = ^TNodoCola;
TNodoCola = record
Data : TDataCola;
Siguiente : PNodoCola;
end;
TCola = class
public
procedure Create;
procedure Free;
procedure Push ( Data : TDataCola );
function Pop : TDataCola;
function Empty : Boolean;
private
Primero, Ultimo: PNodoCola;
end;
implementation
procedure TCola.Create;
begin
Primero := Nil;
Ultimo := Nil;
end;
procedure TCola.Free;
var
Aux : PNodoCola;
begin
Ultimo := Nil;
while not Empty do
begin
Aux := Primero;
Primero := Primero^.Siguiente;
Dispose(Aux);
Aux := Nil;
end;
end;
procedure TCola.Push(Data: TDataCola);
var
Aux : PNodoCola;
begin
New(Aux);
Aux^.Data := Data;
Aux^.Siguiente := Nil;
if Empty then
Primero := Aux
else
Ultimo^.Siguiente := Aux;
Ultimo := Aux;
end;
function TCola.Pop;
var
Aux : PNodoCola;
begin
Result := Primero^.Data;
Aux := Primero;
Primero := Primero^.Siguiente;
Dispose(Aux);
Aux := Nil;
end;
function TCola.Empty;
begin
Result := Primero = Nil;
end;
end.
Gracias y Saludos !