2016-11-09 51 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