{链表节点类}
TNode<E> = class(TObject)
private
FElement : E; //当前节点中的元素
FNext : TNode<E>; //当前节点的下一个节点
FPrevious : TNode<E>; //当前节点的上一个节点
published
property Element : E read FElement write FElement;
property Next : TNode<E> read FNext write FNext;
property Previous : TNode<E> read FPrevious write FPrevious;
public
constructor Create; overload;
constructor Create(Next : TNode<E>;Previous : TNode<E>);overload;
constructor Create(element : E;Next : TNode<E>;Previous : TNode<E>);overload;
destructor Destroy; override;
end;我想写一个双向链表,这是节点类。{ TNode<E> }constructor TNode<E>.Create;
begin
inherited;
// 这里怎么写? FElement := ??
FNext := nil;
FPrevious := nil;
end;constructor TNode<E>.Create(element: E; Next, Previous: TNode<E>);
begin
FElement := element;
FNext := Next;
FPrevious := Previous;
end;1.这两个重载方法,下面那个 TNode<E>.Create 这儿会有下划线红色显示,提示Overload procedure ‘’ must be ed with............但是编译无错也无警告的。
2.还有,第一个Create方法里FElement那里要怎么写呢?null和nil有什么区别呢?我知道java中这样都赋为null就可以,delphi请教
private class Node<E>{
E element;
Node<E> next;
Node<E> previous;
public Node(E element, Node<E> next, Node<E> previous) {
super();
this.element = element;
this.next = next;
this.previous = previous;
}
}
解决方案 »
- 动态加载bpl时,怎么处理共享变量.
- 请各位大虾帮忙想想办法...
- 救救我!
- 关于TDateTime
- 各位大侠,小弟有一个很简单的问题.
- 一个关于AdoQuery的问题!(难)
- 请问OleVariant, wordbool , safecalld 的用法和含义?
- 在程序中能调用Crystal Reports的设计器吗?急!!!!!
- 高分求助,其实也不太难
- 请问where xxx like ''%'+xxx+'%'' 这样的格式对吗?用adodataset作数据源。
- DELPHI XE5中编辑出错,请问可能是什么原因
- 想在窗口中插入一个不规则的图片作为开关,应该怎么弄?注意是不规则的。比如说圆形。
type
TNode<E:class> = class // 把 E 类型化
strict private // 题外话:最好加上关键字strict,strict可将私有成员类似c++友元特性无效,
// delphi中同个单元内的各个类的private成员实际都是友元的存在
....constructor TNode<E>.Create;
begin
FElement := nil; // 就可以赋值nil
FNext := nil;
FPrevious := nil;
end;
你最好直接到generics.collections单元里找一个合适的链表类继承就好了,例如TStack<T>就是一种泛型双向链表。delphi的都有源码,看看generics.collections单元里的那些泛型容器都是怎么写的就好了。
俺都好久没有用d2009以上的版本了,泛型也不是必须的东西,没啥机会弄大工程,也就没法体会泛型对工作效率提高的好处,俺也就用得少都不太熟悉了。另外delphi中俺只知道variants 单元里有个 Null函数,Null函数返回一个null的variant,
关键字的null就不清楚了,貌似在d6开始null关键字就被废弃了。