我正在尝试在c#中实现一个双链表,但是我从未使用过指针,也找不到解决方案。 我正在尝试创建将包含单个项目和指向相邻节点的指针的节点类。
// single elements in the list
unsafe class Node { Node* previous}
{
public int data;
public Node *next;
public Node *prev = *previous;
}
我一直在标题中看到错误,而且我不知道如何解决。
答案 0 :(得分:3)
这里完全不需要未修饰的指针或Pending
。因为unsafe
是一个类,所以当您将Node
用作参数,字段,变量等时-这是对Node
实例的引用。这里的 reference 表示“托管指针”-即类似于指针,但具有完全的GC支持和类型安全性等。因此,您所需要做的只是Node
:
Node
更具体地说,您不能随便使用 unmanaged 指向C#中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
- isn不是你能做的事。您可以使用Node*
来做到这一点,但是:您几乎可以肯定不应该。我希望这里的重点是使用托管指针,也就是引用,即struct
,而不是Node
。
答案 1 :(得分:0)
正如CrowCoder所说的,您不应也不应在C#中使用此实现的指针。这段代码可以帮助您入门:
internal class LLNode {
internal int data;
internal LLNode prev;
internal LLNode next;
public LLNode (int d) {
data = d;
prev = null;
next = null;
}
}