Связанный список добавления элементов в определенных точках - PullRequest
0 голосов
/ 06 января 2019

Я пытаюсь реализовать LinkedList, проблема у меня заключается в добавлении элементов в этот список, я уже добавил элементы в основной класс и хочу знать, как добавлять элементы в начале списка и в конце списка. Ток может печатать, но когда я добавляю новые элементы, они не видны. Я также хочу знать, как получить размер связанного списка.

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

}

public class LinkedList {
    Node head;
    int size;


    public void AddBeginning(int data) {
            Node newNode = new Node(data);
            newNode.next = head;
            this.size++;        
            head = newNode;

    }

    public void addAtEnd(int data) {
        Node current = head;
        while(current.next != null) {
            current = current.next;
        }
        current.next = new Node(data);  
    } 

    public void getSize() {
        System.out.println(size);
    }

    public void printList(Node head) {
        Node current = head;
        while (current !=null) {
        System.out.print(current.data + "-->");
        current = current.next;
        }       
        System.out.print(current);
    }

}


public class Tester {


    public static void main(String[] args) {

        LinkedList ll = new LinkedList();


        Node head = new Node(25);

        Node second = new Node(22);

        Node third = new Node(7);

        head.next = second;
        second.next = third;

        ll.AddBeginning(20);

        ll.printList(head);




    }

    }

Я хотел бы добавить 20 в начале и еще одно целое число в конце.

1 Ответ

0 голосов
/ 06 января 2019

Вы добавляете в узел 20 ll.AddBeginning(20); в LinkedList.head и пытаетесь напечатать список, используя Tester.head (declared in main method)

Решение: Шаг 1: Инициализируйте LinkedList.head либо

     - Using constructor or
             LinkedList ll = new LinkedList(head);

             public LinkedList(Node head) {
                 this.head = head;
             }

     - Assign head to LinkedList object i.e., ll
              ll.head = head; // Need to initialize Linked List with Head

Шаг 2: Нет необходимости передавать переменную head в функцию printList (). Он печатает элементы LinkedList.head

         ll.printList(); //Here you passing Tester.head not required

Код:

Основной метод тестирования

    ll.head = head; // Need to initialize Linked List with Head

    ll.AddBeginning(20); //Here actually adding node to linkedList head

    ll.printList(); //Here you passing Tester.head not required

Метод LinkedList.PrintList

public void printList() {
    Node current = this.head;//changed to linkedlist.head
    while (current != null) {
        System.out.print(current.data + "-->");
        current = current.next;
    }
    System.out.print(current);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...