java - 链表添加节点不起作用

标签 java linked-list

我正在尝试创建一个方法,将节点添加到我的链接列表中。该方法采用一个 int (用于指定新链接应该去的位置)和 String (因为我的链接列表包含字符串)。我编写了一些代码,我认为会在列表中的特定点添加链接,但是当我在添加新节点后打印列表时,我发现新节点尚未添加。我很惊讶,因为我在编写代码时很小心地测试了代码的行为,并且 add 方法似乎达到了我的预期——但是新打印的列表没有反射(reflect)添加新链接后的更改。谁能告诉我哪里出错了:/

ps:类和方法的名称没有争议,是我的老师选择的,这就是它们必须保留的方式。

谢谢!

测试链表

class LinkedListTest 
{
    public static void main(String[] args) 
    {
            LinkedList list = new LinkedList();

            list.insertFirst("cat");
            list.insertFirst("dog");
            list.insertFirst("fish");
            list.insertFirst("cow");
            list.insertFirst("horse");
            list.insertFirst("pig");
            list.insertFirst("chicken");

            list.add(3, "mouse");

            list.print();
    }   
}

链表类

public class LinkedList 
{
    private Link first;

    public LinkedList() 
    {
        first = null;
    }

    public void insertFirst(String word)
    {
           Link link = new Link(word);
           link.next = first;
           first = link;

           System.out.print(first.item + " ");
    }

    public String deleteFirst()
    {   
        Link temp = first;
        first = first.next;
        return temp.item;
    }

    public String get(int index)
    {
        Link current = first;
        while (index > 0) 
         {
             index--;
             current = current.next;
         }

         return current.item;           
    }

    public void add(int index , String someString)
    {

        Link current = first;

        while (index>0)
        {
            index--;
            current = current.next;
        }

    Link newLink = new Link(someString);
    newLink.next = current;
    current = newLink;

    }

    public void print()
    {
        System.out.println("-----------PRINTING LIST------------");
        Link current = first;
        while(!(current==null))
        {
            System.out.println(current.item);
            current = current.next;
        }
    }
}

链接类

public class Link 
{   
    public String item;
    public Link next;

    public Link(String theItem) 
    {
        item = theItem;
    }
}

最佳答案

当插入到这样的列表中时。您将必须设置两个“下一个”链接。下一个指向您要插入的项目,下一个指向您要插入的项目,指向您正在滑过的项目。

希望这有帮助。

关于java - 链表添加节点不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13093185/

相关文章:

java - spring cloud aws 项目不再有活跃的所有者了吗?

c++ - 带有随机指针的链表的深拷贝

java - cucumber 抛出 java.lang.NoClassDefFoundError : io/cucumber/core/gherkin/FeatureParser

java - JLabel 未在 JPanel 内截断

c - 实现数据独立的链表

java - 链表在位置添加

c - C 中的链表和结构 - 在函数中将链表和结构作为参数传递(C)

java - 扩展链接列表方法在单独的类 main 方法中不起作用

java - Activity 和 View 的 findViewById 的父类(super class)型

java - 使用 TabHost 如何更改文本颜色?