簡體   English   中英

Java 中的 addAfter() 單鏈表實現

[英]addAfter() Singly Linked List Implementation in Java

嗨,stackoverflow 社區!

我正在嘗試為我的 SinglyLinkedList 實現 addAfter() 方法,我認為我做對了,但沒有打印出來。 很想看到你們對我可能缺少的東西的見解:

public class LinkedList {
private EmployeeNode head;
private EmployeeNode tail;
private int size;

public void addAfter(EmployeeNode node, Employee newEmployee) {
    EmployeeNode newNode = new EmployeeNode(newEmployee);
    newNode.setNext(node.getNext());
    node.setNext(newNode);
    size++;
    if(tail == null) {
        tail = newNode;
    }
  } 
}

*為了保持代碼簡潔,我沒有添加其他方法,但其他所有方法都可以正常工作,例如 append()、addToFront()、removeFromEnd()、printList() 等。

主要方法:

public class Main {
public static void main(String[] args) {
    Employee janeSmith = new Employee("Jane", "Smith", 44);
    Employee maryJames = new Employee("Mary", "James", 34);
    Employee johnDoe = new Employee("John", "Doe", 78);
    Employee andrewJackson = new Employee("Andrew", "Jackson", 24);
    EmployeeNode node = new EmployeeNode(maryJames);

    LinkedList list = new LinkedList();
    list.addToFront(janeSmith);
    list.addToFront(maryJames);
    list.addToFront(johnDoe);
    list.addAfter(node, andrewJackson);
    list.printList();
}

**Employee 類只有 firstName、lastName 和 id 實例變量,如上述實例所示。

員工節點類:

public class EmployeeNode {
private Employee employee;
private EmployeeNode next;

public EmployeeNode(Employee employee) {
    this.employee = employee;
}

public Employee getEmployee() {
    return employee;
}

public void setEmployee(Employee employee) {
    this.employee = employee;
}

public EmployeeNode getNext() {
    return next;
}

public void setNext(EmployeeNode next) {
    this.next = next;
}

public String toString() {
    return employee.toString();
}
}

當你說

EmployeeNode 節點 = 新 EmployeeNode(maryJames);

您正在創建一個包含 maryJames並且對 next 沒有值的節點。

比你說的

addToFront(瑪麗詹姆斯)

您正在創建一個包含 maryJames 的不同EmployeeNode。 這個 EmployeeNode 具有通過 addFront(method) 正確設置的“next”元素(我假設)。

當你說

list.addAfter(node, andrewJackson);

您正在使用沒有設置“下一個”的 EmployeeNode。 並且 addAfter() 方法將無法正常工作。

您需要使用的EmployeeNode 實例是LinkedList 的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM