Java 使用链表和向节点传递元素时遇到问题

Java 使用链表和向节点传递元素时遇到问题,java,object,insert,linked-list,Java,Object,Insert,Linked List,在这个具体的例子中,它考虑了两种情况。其中一个我试图把一个节点放在链表的开头,我试图把它放在中间或结尾。这是我的节点类。如果查看我的插入方法,则无法工作的部分是: Node newNode=新节点 newNode.setExponentelement 这里是我试图插入到我的链表以及类中的一些其他方法的地方,这些方法应该可以帮助您了解我的代码的外观 class List { private Node head; // Points to first element of the list priv

在这个具体的例子中,它考虑了两种情况。其中一个我试图把一个节点放在链表的开头,我试图把它放在中间或结尾。这是我的节点类。如果查看我的插入方法,则无法工作的部分是:

Node newNode=新节点

newNode.setExponentelement

这里是我试图插入到我的链表以及类中的一些其他方法的地方,这些方法应该可以帮助您了解我的代码的外观

class List {
private Node head; // Points to first element of the list
private int count; // number of elements in the list

// Constructor:
List() {
    // Sets head to null and count to zero
    head = null;
    count = 0;
}

// Inspectors:
// Returns the number of elements in the list
public int size() {
    return count;
}

// Modifiers:
// Inserts element at index in the list. Returns true if successful
public boolean insert(int index, Node element) {
    if (index < 0 || index > count)return false;
    if (index == 0) {
        Node newNode = new Node();
        newNode.setExponent(element);
        count++;
        newNode.setLink(head);
        head = newNode;
        return true;
    }
    Node walker = head;
    for (int i = 1; i < (index - 1); i++)
        walker = walker.getLink();
    Node newNode = new Node();
    newNode.setExponent(element);
    newNode.setLink(walker.getLink());
    walker.setLink(newNode);
    count++;
    return true;
}
试试这个:

假设:您正在尝试将节点元素插入LinkedList的索引中

您的插入方法已修改

public boolean insert(int index, Node element) {
//if (index < 0 || index > count)
if (index < 0 || index > count + 1) return false;
if(head == null) {
    head = element;
    return true;
}
if (index == 0) {
    //Node newNode = new Node();
    //newNode.setExponent(element);
    count++;
    element.setLink(head);
    //newNode.setLink(head);
    head = element;
    //head = newNode;
    return true;
}
    Node walker = head;
    //for (int i = 0; i < (index - 1); i++)
    for (int i = 1; i < index; i++) {
        walker = walker.getLink();
    }
    //Node newNode = new Node();
    //newNode.setExponent(element);
    element.setLink(walker.getLink());
    //newNode.setLink(walker.getLink());
    //walker.setLink(newNode);
    walker.setLink(element);
    count++;
    return true;
}
主要方法:


如果列表为空,并且api的用户尝试在位置3处插入列表,您会期望发生什么情况。此外,当列表中有一项位于索引0处,而您尝试在索引1处插入一项时,请仔细检查您的算法。如果他们尝试在列表为空的位置插入内容,则返回false。至于双重链接,我该怎么做?哦,我现在明白了,我道歉。忽略我关于双链接列表的观点-但是当索引0处有1个项目并且尝试在索引1处插入时,请做一个纸笔练习。我只是不知道语法为什么不起作用。这给了我一个错误,因为我不擅长面向对象编程。错误是当我尝试为新节点赋值时
public boolean insert(int index, Node element) {
//if (index < 0 || index > count)
if (index < 0 || index > count + 1) return false;
if(head == null) {
    head = element;
    return true;
}
if (index == 0) {
    //Node newNode = new Node();
    //newNode.setExponent(element);
    count++;
    element.setLink(head);
    //newNode.setLink(head);
    head = element;
    //head = newNode;
    return true;
}
    Node walker = head;
    //for (int i = 0; i < (index - 1); i++)
    for (int i = 1; i < index; i++) {
        walker = walker.getLink();
    }
    //Node newNode = new Node();
    //newNode.setExponent(element);
    element.setLink(walker.getLink());
    //newNode.setLink(walker.getLink());
    //walker.setLink(newNode);
    walker.setLink(element);
    count++;
    return true;
}
void print() {
    Node travel = head;
    while(travel!= null) {
        System.out.println(travel.getExponent() + " " + travel.getCoefficient());
        travel = travel.getLink();
    }
}
public static void main(String args[]) {
    Node n1 = new Node(1,2);
    List l = new List();
    l.insert(0,n1);

    Node n2 = new Node(3,2);
    l.insert(1,n2);

    Node n3 = new Node(4,5);
    l.insert(0,n3);

    l.print();
}