在 C# 中创建循环链表的最佳方法是什么?我应该从 LinkedList 集合中派生它吗?我计划使用这个链接列表创建一个简单的地址簿来存储我的联系人(这将是一个糟糕的地址簿,但我不在乎,因为我将是唯一使用它的人)。我主要只是想创建关键链接列表,以便我可以在其他项目中再次使用它。
如果您认为链接列表不是正确的方法,请告诉我哪种方法更好。
由于大多数答案实际上并没有触及问题的实质,而只是意图,也许这会有所帮助:
据我所知,链表和循环链表之间的唯一区别是迭代器到达列表末尾或开头时的行为。支持循环链表行为的一个非常简单的方法是为 LinkedListNode 编写一个扩展方法,该方法返回列表中的下一个节点或第一个节点(如果不存在这样的节点),并且类似地检索前一个节点或最后一个节点如果不存在这样的节点,则为 1。尽管我还没有测试过,但以下代码应该可以完成此任务:
static class CircularLinkedList {
public static LinkedListNode<T> NextOrFirst<T>(this LinkedListNode<T> current)
{
return current.Next ?? current.List.First;
}
public static LinkedListNode<T> PreviousOrLast<T>(this LinkedListNode<T> current)
{
return current.Previous ?? current.List.Last;
}
}
现在您只需调用 myNode.NextOrFirst() 而不是 myNode.Next,您将拥有循环链表的所有行为。您仍然可以进行恒定时间删除以及在列表中的所有节点之前和之后插入等。如果我缺少循环链表的其他关键部分,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)