通过将最后一个节点指向中间节点将单链表转换为循环链表

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 是只读的,这意味着您无法设置它。所以你想要的是不可能的。