我试图在c#中实现一个双链接列表,但我以前从未使用过指针,也无法找到解决方案。我正在尝试创建节点类,它将保存指向相邻节点的单个项和指针。
// single elements in the list
unsafe class Node { Node* previous}
public int data;
public Node *next;
public Node *prev = *previous;
}
我不断地得到标题中的错误,我不知道如何修正它。
发布于 2019-05-02 14:33:42
这里根本不需要未命名的指针或
unsafe
。因为
Node
是一个类,所以当您使用
Node
作为参数、字段、变量等时,这是对
Node
实例的引用。这里引用的意思是“托管指针”,即像指针一样,但是有完全的GC支持和类型安全性等等。所以您所需要的就是
Node
。
class Node
public int Data {get;set;}
public Node Next {get;set;} // Next/Previous might want "private set" if
public Node Previous {get;set;} // you are going to change them via methods
}
更具体地说,您不能轻易地接受指向
class
的非托管指针( C#中的
Node*
)--这根本不是您所能做的事情。您可以使用
struct
来实现这一点,但是:您几乎肯定不应该这样做。我希望这里的重点是使用托管指针,也就是引用,即
Node
,而不是
Node*
。
发布于 2019-05-02 14:35:57
正如CrowCoder所述,对于此实现,您不应该也不应该在C#中使用指针。这段代码应该会让您开始:
internal class LLNode {
internal int data;
internal LLNode prev;
internal LLNode next;