Ведение порядка вставки связанного списка - PullRequest
0 голосов
/ 06 декабря 2018

Итак, я делаю связанный список, и в моей вставке мне нужно поддерживать его порядок.Так что, если бы мне пришлось пройти через связанный список от корня до его следа с этой вставкой ->

Insertion: 1 2 3 

Это должно вывести ->

Output: 1 2 3

Пока у меня естьэтот код ниже.Весь этот код выводит мою вставку в обратном порядке.Поэтому он печатает ->

3
2
1

Я хочу, чтобы программа поддерживала порядок вставки, изменяя мой метод addLast ().Поэтому, когда я печатаю свой связанный список, он получается так же, как я его вставил.

public class LinkedListMeth 
{
  public static void main(String[] args) 
  {
     FirstLinkedList list = new FirstLinkedList();
     list.addLast(1);
     list.addLast(2);
     list.addLast(3);
     list.traverseLast();
 }
}

class FirstLinkedList
{
private class Node           
   {
      private Node next;
      private int data;
   }

   private Node last = null; 

  public void addLast(int d)
   {
       Node newNode = new Node();
       newNode.data = d;
       newNode.next = last;
       last = newNode;  
   }

    public void traverseLast()
   {
       Node head = last;
       while (head != null)

       {
           System.out.println(head.data);
           head = head.next;
       }
   }

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вы должны держать корень вашего связанного списка для обхода в порядке вставки.

Вот отредактированная версия вашего кода:

class FirstLinkedList {
    private class Node {
        private Node next;
        private int data;
    }

    private Node root = null;
    private Node last = null;

    public void addLast(int d) {
        Node node = new Node();
        node.data = d;
        if (root == null) {
            root = node;
            root.next = last;
            last = root;
        } else {
            last.next = node;
            last = last.next;
        }
    }

    public void traverseLast() {
        Node head = root;
        while (head != null) {
            System.out.println(head.data);
            head = head.next;
        }
    }
}

Вывод:

1
2
3
0 голосов
/ 06 декабря 2018

Если вы хотите придерживаться своего точного текущего дизайна, то одним из вариантов печати списка в порядке начала и конца будет использование рекурсии, что-то вроде этого:

public void printFirstLinkedList(Node node) {
    if (node == null) return;

    printFirstLinkedList(node.next);

    System.out.print(node.data + " ");

    return;
}

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