1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
type
TValue = char;
PCell = ^TCell;
TCell = packed record
Value: TValue;
Next : PCellule;
end;
TList = object
Count : integer;
First : PCell;
Last : PCell;
procedure Init;
procedure Release;
procedure Add(const Value: TValue);
end;
procedure TList.Init;
begin
Count := 0;
First := nil;
Last := nil;
end;
procedure TList.Release;
var C,N : PCell;
begin
C := First;
while C <> nil do
begin
N := C^.Next;
Dispose(C);
C := N;
end;
Count := 0;
First := nil;
Last := nil;
end;
procedure TList.Add(const Value: TValue);
var L : PCell;
begin
if count = 0 then
begin
new(First)
First^.Value := Value;
First^.next := nil;
Last := First;
end
else
begin
new(L);
L^.Value := Value;
L^.Next := nil;
Last^.Next := L;
Last := L;
end;
inc(count);
end;
procedure Push(const List: TList);
var V : TValue;
begin
List.Release;
while not eoln do
begin
readln(V);
List.add(V);
end;
end; |
Partager