我们可以在 C# 中将两个节点的地址分配为一个 LinkedListNode 的下一个吗?



我正在 c# 中从链表数据结构中解决一个程序,我需要检查给定的链表是否以 NULL 终止或以循环结尾。 我想用不同的测试用例检查它,但无法传递循环链表作为输入。

如何将循环链表作为输入传递?

来自黑客等级的问题会给你一个想法,我想实现什么?

这是我实现图像中显示的链表的代码

private static LinkedList<int> InitializeLinkedList ()
{
LinkedList<int> linkedList = new LinkedList<int>();
LinkedListNode<int> item1 = new LinkedListNode<int>(1);
LinkedListNode<int> item2 = new LinkedListNode<int>(2);
LinkedListNode<int> item3 = new LinkedListNode<int>(3);
LinkedListNode<int> item4 = new LinkedListNode<int>(4);
LinkedListNode<int> item5 = new LinkedListNode<int>(5);
LinkedListNode<int> item6 = new LinkedListNode<int>(6);
linkedList.AddLast(item1);
linkedList.AddLast(item2);
linkedList.AddLast(item3);
linkedList.AddLast(item4);
linkedList.AddLast(item5);
linkedList.AddAfter(item3, item6);
return linkedList;            
}

不可能创建一个循环,LinkedList<>是用LinkedListNode构建的<>这些节点包含项目值以及用于导航的列表,下一个和上一个,这些成员只有内部资源库,因此您无法手动分配这些资源库。然而,当我们在链表上调用AddFirstAddLastAddAfterAddBefore时,这些设置。

理论上,我们可以将第一个和最后一个设置为相同的 LinkedListNode

var item1 = new LinkedListNode<string>("one");
var item2 = new LinkedListNode<string>("two");
var item3 = new LinkedListNode<string>("three");
var list = new LinkedList<string>();
list.AddFirst(item1);
list.AddAfter(item1, item2);
list.AddAfter(item2, item3);
list.AddLast(item1);

但是如果我们尝试以下操作,我们将得到"未处理的异常:System.InvalidOperationException:LinkedList 节点已经属于 LinkedList。例外

尝试以下操作:

static void Main(string[] args)
{
LinkedList<Node> ll = new LinkedList<Node>();
Node node1 = new Node();
Node node2 = new Node();
Node node3 = new Node();
ll.AddLast(node1);
ll.AddLast(node2);
ll.AddLast(node3);
ll.AddLast(node2);
}
public class Node
{
}

相关内容

  • 没有找到相关文章

最新更新