简体   繁体   English

使用链表和将元素传递到节点时遇到麻烦

[英]Having some trouble using a Linked List and passing elements to the Node

In this specific instance, it takes into account two occasions. 在这种特定情况下,它考虑了两种情况。 One where I'm trying to place a node in the beginning of the Linked List and one where I'm trying to place it in the middle or at the end. 我尝试将一个节点放置在“链表”的开头,而我尝试将其放置在中间或末尾。 Here is my Node Class. 这是我的节点类。 If you look at my INSERT method, the part that is not working is: 如果您查看我的INSERT方法,则无效的部分是:

Node newNode = new Node(); 节点newNode = new Node();

newNode.setExponent(element); newNode.setExponent(element);

class Node {

private int coefficient;
private int exponent;
private Node link;

// Constructor: Node()
Node(int c, int e) {
    // Sets coefficient to c, exponent to e, and link to null
    coefficient = c;
    exponent = e;
    link = null;
}

// Inspectors: getCoefficient(), getExponent(), getLink()
public int getCoefficient() {
    // Returns coefficient

    return coefficient;
}

public int getExponent() {
    // Returns exponent
    return exponent;
}

public Node getLink() {
    // Returns link
    return link;
}

// Modifiers: setCoefficient(), setExponent(), setLink()
public void setCoefficient(int c) {
    // Sets coefficient to c
    coefficient = c;
}

public void setExponent(int e) {
    // Sets exponent to e
    exponent = e;
}

public void setLink(Node n) {
    // Sets link to n
    link = n;
}
}// Ends Node Class

Here is where I'm trying to insert to my Linked List along with some other methods in the class that should help give you an idea of how my code looks. 这是我尝试将插入的内容以及类中的其他方法插入到链接列表中的地方,这些方法应该有助于您了解我的代码的外观。

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

Try this: 尝试这个:

Assumption: You are trying to insert a Node element into the index of LinkedList 假设:您正在尝试将Node element插入LinkedList的index

Your insert method with modification. 您的insert方法经过修改。

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

Sample Test Case: 样本测试案例:

print method: print方式:

void print() {
    Node travel = head;
    while(travel!= null) {
        System.out.println(travel.getExponent() + " " + travel.getCoefficient());
        travel = travel.getLink();
    }
}

Main method: Main方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM