รายการที่เชื่อมโยงในการแทรก java ในตอนท้าย

พวกฉันมีปัญหาขณะแทรกโหนดใหม่ในตอนท้ายของรายการ insert ที่จุดเริ่มต้นทำงานได้ดี แต่ในการ insert ที่ส่วนท้ายจะแสดงข้อยกเว้นของตัวชี้ null

โปรดดูวิธีการ 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");

    }

}

person Raj Gawade    schedule 02.08.2015    source แหล่งที่มา
comment
โปรดระบุสแต็กเทรซทั้งหมดเพื่อให้เราทราบว่าข้อผิดพลาดเกิดขึ้นที่ใด   -  person NitrogenReaction    schedule 02.08.2015
comment
นอกจากนี้โปรดเพิ่มแท็กภาษา (ดูเหมือน Java แต่ฉันไม่แน่ใจ) นอกจากนี้ โปรดปฏิบัติตาม แบบแผน Java (หากเป็นเช่นนี้ แม้แต่จาวา)   -  person NitrogenReaction    schedule 02.08.2015
comment
ครั้งต่อไปฉันจะดูแลเรื่องนั้น :)   -  person Raj Gawade    schedule 09.08.2015


คำตอบ (1)


ปัญหาคือลูปของคุณดำเนินไปจนถึง 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;
}
person NitrogenReaction    schedule 02.08.2015
comment
คำตอบของฉันช่วยแก้ปัญหาของคุณได้ ดังนั้นคุณจะยอมรับมันหรือบอกฉันว่าฉันจะเพิ่มอะไรได้อีก - person NitrogenReaction; 04.08.2015
comment
ขอบคุณท่าน คำตอบของคุณแก้ไขปัญหาของฉันได้ มันใช้งานได้แล้ว :) - person Raj Gawade; 09.08.2015
comment
ดีใจที่สามารถช่วยได้ ฉันจะขอบคุณมากหากคุณจะยอมรับคำตอบของฉัน - person NitrogenReaction; 09.08.2015