当前位置: 首页 > 知识库问答 >
问题:

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

吴炎彬
2023-03-14

给定一个单链表和中间节点从一开始的编号,我试图通过将最后一个节点指向中间节点来创建一个循环单链表。我写了以下代码:

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;
}

然而,Linkedlist的最后一个节点仍然指向null而不是中间节点。我明白我哪里出错了,我找不到它。请帮忙。

共有1个答案

金嘉言
2023-03-14

你能让它工作的唯一方法就是改变:

currentNode = middleNode

此行只是将对currentNode对象的引用替换为对middleNode对象的引用。

您需要将此更改为:

currentNode.Next = middleNode

不幸的是,除非在你的CustomLinkedListNode中,你已经向“下一步”属性当前节点添加了一个设置器。Next是只读的,这意味着您不能设置它。因此,你想要的是不可能的。

 类似资料:
  • 我需要实现一个循环的单链表数据结构。我无法理解的是何时何地必须声明列表的最后一个节点必须指向第一个节点。我有以下空构造函数来构建列表: 因此,基本上每个列表都以一个null对象开始,该对象再次指向null,表示列表结束: 然而,我不知道的是如何使它当列表包含至少一个节点时,该节点将指向列表的第一个节点。 例如,看看我为常规链表实现的addLast()方法: 我必须把它变成这样: 一旦列表的下一个节

  • 本文向大家介绍在C ++中将单链表转换为循环链表,包括了在C ++中将单链表转换为循环链表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论将单链接列表转换为循环链接列表的程序。 为此,我们将提供一个单链表。我们的任务是获取该列表的元素,并将其转换为循环链接列表。 示例 输出结果

  • 公共类LinkedList11{//私有内部类节点 }

  • 我有一个基本的链表问题,我在下面试图解决。如果您能为我的方法、算法的正确性(甚至是编码风格)提供任何信息,我将不胜感激。该问题需要一个函数,该函数删除循环链表中所有出现的int,并返回列表中的任何节点或NULL(当列表为NULL时)。 以下是我目前掌握的一些C代码:

  • 我尝试实现循环链表的insert方法。我想我取得了一些成功。 问题:当我显示列表时。display方法将循环,因为链接的每个next变量都链接到一个非Null节点对象。所以head永远不会是空对象。根据我对单链表的回忆,head总是指向列表中的第一个节点或其中包含数据的第一个节点。 我对循环链表的概念理解:根据我的理解,循环链表有点像一个单链表,但有一点小的变化:尾部对象的下一个变量指向头部。 来