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

循环链表节点插入Java

郭辉
2023-03-14

我尝试实现循环链表的insert方法。我想我取得了一些成功。

问题:当我显示列表时。display方法将循环,因为链接的每个next变量都链接到一个非Null节点对象。所以head永远不会是空对象。根据我对单链表的回忆,head总是指向列表中的第一个节点或其中包含数据的第一个节点。

我对循环链表的概念理解:根据我的理解,循环链表有点像一个单链表,但有一点小的变化:尾部对象的下一个变量指向头部。

来源:http://sourcecodemania.com/circular-linked-lists/

public void insert(String data)
    {
        Link link = new Link(data);

        if(head == null)
        {
            head = link;
            tail= link;
        }
        else
        {
            tail.next = link;
            tail = link;
            tail.next = head;

        }
    }


public void display()
    {


        // good implementation for display #2
        while(head != null)
        {
        //  System.out.println (head.data);
            head = head.next;
        }
    }

共有1个答案

阳德润
2023-03-14

一旦您插入了至少一个元素,您将永远不会遇到NULL。它会一直延续到无穷大。

此外,仅仅为了显示列表而修改head可能不是一个好主意。像显示这样的操作不应该有任何副作用。

相反,在list类中保留一个成员字段大小,并在每个insert和delete方法中更新它。

ListClassName current = head;    // Head is not modified.
for (int i = 0; i < this.size; i++) {
//   System.out.println (current.data);
     current = current.next;
}
 类似资料:
  • 我有一个基本的链表问题,我在下面试图解决。如果您能为我的方法、算法的正确性(甚至是编码风格)提供任何信息,我将不胜感激。该问题需要一个函数,该函数删除循环链表中所有出现的int,并返回列表中的任何节点或NULL(当列表为NULL时)。 以下是我目前掌握的一些C代码:

  • 我在做一个程序,没有使用Java的内置链表类;我在从头开始做。除了编写一个将节点插入链表的特定位置的方法外,我在所有方面都取得了成功。 我有一个方法将一个特定的节点设置为“当前”节点。所以,例如,我有一个链表,看起来是这样的:猫-->狗-->使-->好-->宠物,“当前”等于2;这意味着“当前”节点是“狗”。 从这里开始,假设我想在“current”的位置插入一个新节点,它的info字段为AND。

  • 我理解得对吗?(从虚拟节点开始) dummy->a->b->c->d->dummy(环绕到dummy节点) 因此,如果我想删除第一个实际的数据段(A),我需要将它分配给一个临时变量。所以Node first=head.next。然后我需要有一个虚拟的头部引用“B”,所以我需要做head.next=first.next。这就是所有需要做的吗? 在从列表中删除任何节点N的情况下(假设它在列表中),这是

  • 我是java的初学者。我试图编写一个程序,在给定位置插入一个节点,并显示整个链表。但是,我的节点似乎没有被插入,当我显示链接列表时,只显示第一个节点值。有人能解释一下我哪里出了问题吗? //这里,位置是索引位置。索引从0开始,以大小1结束,就像一个数组。 //插入代码 //遍历代码 //主要方法 输出:

  • 我正在尝试创建一个函数,用于在双链接列表的末尾添加。我无法精确指出为什么它没有打印出任何内容。 当我构建程序时,没有出现错误。 我正在确定。新建节点首先检查头部是否有任何值 在上一个当前指针之后创建 我将前一个节点连接到新节点,新节点指向前一个节点,而新节点指向nullptr作为下一个节点。