通过将最后一个节点指向中间节点将单链表转换为循环链表
Converting singly linked list to circular linked list by pointing last node to middle node
给定一个单链表和中间节点的编号,我试图通过将最后一个节点指向中间节点来创建一个循环单链表。我写了下面的代码:
private static void PointToMiddle(ref CustomLinkedList myll, int middleNodeNumber)
{
CustomLinkedListNode currentNode = myll.Root;
CustomLinkedListNode middleNode = null;
for (int iCtr = 1; currentNode != null; iCtr++)
{
if (iCtr == middleNodeNumber)
middleNode = currentNode;
currentNode = currentNode.next;
}
currentNode = middleNode;
}
但是链表的最后一个节点仍然指向空而不是中间节点。我知道我哪里出错了,我找不到它。请帮忙。
使它起作用的唯一方法是更改:
currentNode = middleNode
这一行只是将对 currentNode 对象的引用替换为对 middleNode 对象的引用。
您需要将其更改为:
currentNode.Next = middleNode
不幸的是——除非在您的 CustomLinkedListNode 中您已将 setter 添加到 "Next" 属性,否则 currentNode.Next 是只读的,这意味着您无法设置它。所以你想要的是不可能的。
给定一个单链表和中间节点的编号,我试图通过将最后一个节点指向中间节点来创建一个循环单链表。我写了下面的代码:
private static void PointToMiddle(ref CustomLinkedList myll, int middleNodeNumber)
{
CustomLinkedListNode currentNode = myll.Root;
CustomLinkedListNode middleNode = null;
for (int iCtr = 1; currentNode != null; iCtr++)
{
if (iCtr == middleNodeNumber)
middleNode = currentNode;
currentNode = currentNode.next;
}
currentNode = middleNode;
}
但是链表的最后一个节点仍然指向空而不是中间节点。我知道我哪里出错了,我找不到它。请帮忙。
使它起作用的唯一方法是更改:
currentNode = middleNode
这一行只是将对 currentNode 对象的引用替换为对 middleNode 对象的引用。
您需要将其更改为:
currentNode.Next = middleNode
不幸的是——除非在您的 CustomLinkedListNode 中您已将 setter 添加到 "Next" 属性,否则 currentNode.Next 是只读的,这意味着您无法设置它。所以你想要的是不可能的。