56 lines
953 B
Text
56 lines
953 B
Text
namespace LinkedList;
|
|
|
|
interface
|
|
|
|
uses
|
|
System.Text;
|
|
|
|
type
|
|
List<T> = public class
|
|
where T is Object;
|
|
private
|
|
method AppendToString(aBuilder: StringBuilder);
|
|
public
|
|
constructor(aData: T);
|
|
constructor(aData: T; aNext: List<T>);
|
|
property Next: List<T>;
|
|
property Data: T;
|
|
|
|
method ToString: string; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
constructor List<T>(aData: T);
|
|
begin
|
|
Data := aData;
|
|
end;
|
|
|
|
constructor List<T>(aData: T; aNext: List<T>);
|
|
begin
|
|
constructor(aData);
|
|
Next := aNext;
|
|
end;
|
|
|
|
method List<T>.ToString: string;
|
|
begin
|
|
with lBuilder := new StringBuilder do begin
|
|
AppendToString(lBuilder);
|
|
result := lBuilder.ToString();
|
|
end;
|
|
end;
|
|
|
|
method List<T>.AppendToString(aBuilder: StringBuilder);
|
|
begin
|
|
if assigned(Data) then
|
|
aBuilder.Append(Data.ToString)
|
|
else
|
|
aBuilder.Append('nil');
|
|
|
|
if assigned(Next) then begin
|
|
aBuilder.Append(', ');
|
|
Next.AppendToString(aBuilder);
|
|
end;
|
|
end;
|
|
|
|
end.
|