作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人有一个使用 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;
}
}
谢谢。
最佳答案
为了使链表成为循环链表,尾节点应引用头节点。因此,只需在 Add()
方法末尾执行此操作即可:
toAdd.next = head;
请注意,您的 Add()
方法不会迭代链表中的所有节点,而只是迭代
Node current = head;
因此,如果您尝试添加多个节点,则只有头节点将被更新以指向每个新节点,替换它在每个 Add()
调用中拥有的任何引用,并且您的链表将始终最多只包含 2 个节点。
您可以像这样迭代每个节点(这替换了我上面提到的行):
Node current = head;
while (current.next != head)
{
current = current.next;
}
现在,无论您向链表添加多少个节点,current
都将代表您的尾节点。然后你可以追加新的尾节点,使旧的指向新的,新的指向你的头节点。
另一件事:您当前的 Add()
实现要求您使用头节点初始化链表,否则如果您尝试添加,将会引发 NullReferenceException
任何事物。您可以编写一个构造函数来轻松处理这个问题。
关于c# - 创建一个非常简单的单循环列表 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518395/
我是一名优秀的程序员,十分优秀!