Возникли проблемы при вставке значений в связанный список (Java)? - PullRequest
0 голосов
/ 03 сентября 2018


Привет, я довольно новичок в LinkedLists в Java, и у меня возникают проблемы при вставке значений в связанный список. Программа успешно компилируется, и я могу добавить только несколько номеров в связанный список. Было бы полезно, если бы кто-нибудь дал объяснение, почему это происходит, и решение этой проблемы.


class LNode {
    int data;
    LNode next;
    public LNode(int data)
    {
        this.data=data;
    }
}

class linkedList {
    LNode head; // initialize head.

    // methods
    public void append(int data) {

        if(head==null) {
            head= new LNode(data);
            return;
        }
        LNode temp = head;
        while(temp.next!=null) {
            temp=temp.next; 
        }
        temp = new LNode(data);
    }

    public void prepend(int data) {
        LNode temp=new LNode(data);
        temp.next=head;
        head=temp;      
    }

    public void DelteValue(int data) {
        if(head==null)
            return;
        if(head.data==data) {
            head=head.next;
            return;
        }
        LNode current=new LNode(data);
        while(current.next!=null) {
            if(current.next.data==data) {
                current.next=current.next.next;
                return;
            }
            current=current.next;
        }

    }
    public void show() {
        LNode temp= head;
        while(temp.next!=null) {
            System.out.println(temp.data);
            temp=temp.next;
        }
    }

}

public class LinkedLists {

    public static void main(String[] args) {
        linkedList LL=new linkedList();
        LL.append(5);
        LL.append(15);
        LL.append(25);
        LL.prepend(1);
        LL.prepend(12);
        LL.prepend(22);

        LL.show();

    }
}

Пожалуйста, посмотрите и опубликуйте решение, если это возможно? Спасибо за тонну.


Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Это в вашем методе добавления:

LNode temp = head;
while(temp.next!=null) {
   temp=temp.next; 
}
temp = new LNode(data);

Когда цикл while завершается, temp указывает на объект LAST в вашем списке. Но затем вы выбрасываете это с заданием на следующей строке. Должно быть

temp.next = new LNode(data);
0 голосов
/ 03 сентября 2018

Логика в вашем append() методе неверна. После перехода в конец списка вам нужно вставить новый узел в последнюю позицию:

public void append(int data) {

    if (head == null) {
        head = new LNode(data);
        return;
    }

    LNode temp = head;
    while (temp.next != null) {
        temp = temp.next;
    }
    temp.next = new LNode(data);
}

Ваш prepend() метод выглядит хорошо. Я не проверял ваш метод удаления, и у него тоже могут быть проблемы. Этот ответ касается непосредственно того, что вы спросили выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...