Java中的链表在末尾插入



伙计们,在列表末尾插入新节点时,我确实遇到了问题。在开始插入工作良好,但在插入结束它显示空指针异常。

请查看inserAtEnd方法并建议我如何处理:

package linkedlist;
class Node{
    Node next;
    Object data;
    Node(Object x)
    {
        data=x;
    }
}
class LL
{
    Node first;
    LL(Node f)
    {
       first =f;
    }
    void insertAtBeg(Object x)
    {
        Node n= new Node(x);
        n.next=first;
        first=n;
    }
    void insertAtEnd(Object x)
    {
        Node n= new Node(x);
        Node k;
        k=first;
        while(k!=null)
        {
            k=k.next;
        }
      k.next=n;

    }
    void print()
    {
        Node p=first;
        while(p!=null)
        {
            System.out.print(p.data+"-->");
            p=p.next;
        }
    }
}
public class LinkedList {

    public static void main(String[] args) {
        LL l = new LL(null);
        l.insertAtBeg("Raj");
        l.insertAtBeg("Am ");
        l.insertAtBeg("I ");
        l.insertAtBeg("100 ");
        l.insertAtEnd("Hello");
        l.print();
        System.out.println("returned in main");
    }
}

问题是你的循环直到k为空,你想要直到k.next等于空。您还可以通过为最后一个节点设置一个变量来解决这个问题(这几乎总是这样做的)。我提供的代码在不添加任何新变量的情况下修复了这个问题:

void insertAtEnd(Object x) {
    Node n= new Node(x);
    Node k;
    k=first;
    while(k.next != null) {
        k=k.next;
    }
    k.next=n;
}

相关内容

  • 没有找到相关文章

最新更新