1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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.
|