Jos*_*eph 2 c# linked-list circular-list data-structures
有没有人有一个使用C#非常简单地实现循环链接列表的例子?
我有这个链表但我不知道怎么做特别的:
public class LinkedList
{
public class Node
{
public Node next;
public Object data;
}
private Node head;
public void Add(Object data)
{
Node toAdd = new Node();
toAdd.data = data;
Node current = head;
current.next = toAdd;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
要使链接列表为循环,您的尾节点应引用头节点.因此,只需在Add()
方法结束时执行此操作:
toAdd.next = head;
Run Code Online (Sandbox Code Playgroud)
请注意,您的Add()
方法不会遍历链表中的所有节点,它只是这样做
Node current = head;
Run Code Online (Sandbox Code Playgroud)
因此,如果您尝试添加多个节点,则只更新头节点以指向每个新节点,替换每次Add()
调用中的任何引用,并且链接列表最多只包含2个节点.
您可以像这样迭代每个节点(这取代了我上面提到的那一行):
Node current = head;
while (current.next != head)
{
current = current.next;
}
Run Code Online (Sandbox Code Playgroud)
current
无论您添加到链接列表的节点数量多少,现在都将代表您的尾节点.然后,您可以追加新的尾节点,将旧的一个点指向新的尾节点,然后将新的一个点指向您的头节点.
另一件事:您当前的实现Add()
要求您使用头节点初始化链接列表,否则NullReferenceException
如果您尝试添加任何内容,将会引发.您可以编写构造函数来轻松处理此问题.
归档时间: |
|
查看次数: |
8963 次 |
最近记录: |