Моя проблема с кодом заключается в том, что когда я запускаю код, элементы list1st автоматически копируются на узел ll - PullRequest
0 голосов
/ 29 мая 2020

Моя проблема с кодом заключается в том, что когда я запускаю код, элементы list1st автоматически копируются на узел ll

один класс для реализации связанного списка:

public class node {

    static public class Node{
        Node next;
        int data;
        Node(int d)
        {
            this.data=d;
            this.next=null;
        }
        static Node head=null;
        public void add(int data)
        {
             Node new_node = new Node(data); 
                new_node.next = head; 
                head = new_node; 

        }
public void printlist(Node list) {

             Node currNode = list.head; 

                System.out.print("Linked List: "); 

                // Traverse through the Linked List 
                while (currNode != null) { 
                    // Print the data at current node 
                    System.out.print(currNode.data + " "); 

                    // Go to next node 
                    currNode = currNode.next; 
                } 
                System.out.println(" ");
        }
}
}

Второй класс для работы в связанном списке:

    public class Linked_list {
        public static void main(String args[])
        {
            Node list1=new Node(0);*// 1st linked list*
            list1.add(10);
            list1.add(1);
            list1.add(15);
            list1.add(3);
            list1.add(88);
            list1.printlist(list1);
            Node ll=new Node(0);   **//second linked list**
            ll.add(55);
            ll.add(44);
            ll.printlist(ll);
        }

 }

Моя проблема с кодом заключается в том, что когда я запускаю код, элементы list1st автоматически копируются в узел ll.

1 Ответ

1 голос
/ 29 мая 2020

В вашем коде есть несколько ошибок. Основная ошибка здесь, в вашем классе Node:

static Node head=null;

Поле head не должно быть static. Измените его на это:

private Node head = null;

Вам также потребуется изменить остальную часть кода, чтобы установить переменную head соответствующим образом: метод add должен возвращать вновь созданный Node вместо void, а в методе main вам нужно использовать возвращаемое значение.

Почему неправильно делать это static: потому что static делает его переменной уровня класса, совместно используемой все экземпляры класса, и это не то, что вам нужно.

Дополнительная информация: Понимание членов класса

Кроме того, метод printlist не требует Node в качестве аргумента. Просто заставьте его работать на Node, на котором вы его вызываете.

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