{链表节点类}
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;
}
}
解决方案 »
- 类的不同实例取Self地址为什么相同(续先前结帖问题)?
- D7的ACTIONMANAGER有太多的问题,例举如下,并请高手给出诊断方法,在下感激不尽
- 这是不是bug呀?? 不得不怀疑了.~~~~~~~~~
- 窗口为什么消失了
- 高手,救急呀!!!请问seek(F,-longint)行吗? 给分!!!
- 转一下,看看人汽
- 大虾请进,我再一个窗体里有三个stringgrid,想要使用弹出菜单显示stringgrid的某一行的必详细的信息,怎么判断是那个stringgrid?
- 菜鸟接到一个开发任务,需要写什么方案之类的,哪位有,给一份
- 请问在Delphi中利用NMUDP编程时,如何来实现控制发送包的大小,把文件一部分一部分地传送,在接收端又如何把文件复原?谢谢!
- 小弟初学Delphi,不知道在控件栏的哪一页可以找到TCustomPanel控件?请各位高手帮忙。
- 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关键字就被废弃了。