2016-11-09 75 views
-1

我目前正在處理需要從用戶輸入的位置插入和刪除數據的鏈接列表。不過,我在插入時遇到了一些錯誤。我遵循我在網上找到的代碼,我不知道問題出在哪裏,我輸入的數據沒有插入到鏈表中,每次顯示鏈表時,它都顯示爲NULL,即使我插入了一些數據它。數據未插入鏈接列表中用戶輸入的位置Java

這裏是我的插入代碼:

public void addItemRequest(Node head, int item, int position) 
    { 
    Node prevNode = head; 
    Node newNode = new Node(item,null); 

    if (head==null) 
    { 
     return; 
    } 

    if (position == 0) 
    { 
     newNode.next = head; 
     return; 
    }  

    int count = 0; 
    while (count < position -1 && head.next != null) 
    { 
     head = head.next;   
     count++;  
    } 

    Node currNode = head.next; 
    head.next = newNode; 
    head = head.next; 
    head.next = currNode;  
    return; 
} 

這裏是我的節點類代碼:

class Node{ 
int num; 
Node next; 

Node() 
{ 
    num=0; 
    next=null; 
} 

Node(int num, Node next) 
{ 
    this.num=num; 
    this.next=next; 
} 

int getNum() 
{ 
    return num; 
} 

Node getNext() 
{ 
    return next; 
} 

void setNext(Node next) 
{ 
    this.next=next; 
} 
} 

我希望有人能告訴我這裏有什麼問題,謝謝。

+1

請發佈您的'Node'構造函數的代碼... – brso05

+1

檢查您的Node類,可能是有引發上述異常的方法。 – beatrice

+0

@beatrice哦,是的,它是。我刪除了它,並將我的代碼更改爲Node newNode = new Node(item,null)。但它仍然沒有將數據存儲在列表中,爲什麼? – Acetamide

回答

-1

你必須要head作爲一個全局變量,然後只將工作

悠着點只有一個

public void addItemRequest(Node head, int item, int position) 
{ 
    Node prevNode = head; 
    Node newNode = new Node(item,null); 

    if (head==null) 
    { 
     head=newNode; 
     return; 
    } 

    if (position == 0) 
    { 
     newNode.next = head; 
     head = newNode; 
     return; 
    }  

    int count = 0; 
    while (count < position -1 && head.next != null) 
    { 
     prevNode = prevNode.next;   
     count++;  
    } 
    newNode.next = prevNode.next; 
    prevNode.next = newNode;  
    return; 
} 

檢查現在是新的臨時節點。我已經糾正了答案。 head=newNode;必須添加在if (position == 0)

如果你真的想欣賞接受答案,並upvote它。這樣像你這樣的人也可以輕鬆找到解決方案。

+0

'head = newNode;'沒有任何意義,它分配給局部變量。 – talex

+0

任何方式感謝您的意見,我已經相應地更新 – jafarbtech

+0

簡單的建議,使'頭'全球可能沒有幫助。幫助OP提供他提供的信息顯然是不可能的。這並不意味着你應該給出如此廣泛的建議。對於OP這樣沒有經驗的人來說,它只會讓唱得更糟。 – talex