Преобразовать односвязный список в двусвязный список


    public static void main(String[] args) {
// Создаем элементы списка

        A1 elementRoot = new A1();
        elementRoot.a = 0;
        A1 element1 = new A1();
        element1.a = 1;
        A1 element2 = new A1();
        element2.a = 2;
        A1 element3 = new A1();
        element3.a = 3;
        A1 element4 = new A1();
        element4.a = 4;
        A1 element5 = new A1();
        element5.a = 5;
        A1 element6 = new A1();
        element6.a = 6;
        A1 element7 = new A1();
        element7.a = 7;

// Проставляем ссылки для организации СВЯЗНОГО списка
        elementRoot.next = element1;
        element1.next = element2;
        element2.next = element3;
        element3.next = element4;
        element4.next = element5;
        element5.next = element6;
        element6.next = element7;
        element7.next = null; // Последний элемент ни на что не ссылается

// Динамическое добавление элемента в список (1-й вариант)
        A1 element8 = new A1();
        element8.a = 8;
        addElement1(elementRoot, element8);

// Динамическое добавление элемента в список (2-й вариант)
        addElement2(elementRoot, 9);

// Выводим значения элементов списка
        A1 top = elementRoot;
        while (top.next != null) {
            System.out.println(top.a);
            top = top.next;
        }
        System.out.println(top.a);
    }

    /**
     * Метод для динамического добавления элемента в список задача метода - найти
     * последний элемент списка и прикрепить к нему новый (который станет последним)
     */
    static void addElement1(A1 root, A1 newElement) {
// Начинаем искать последний элемент списка от корня
        A1 top = root;
// В цикле проходим весь список, пока не достигнем конца (next=null)
        while (top.next != null) {
            top = top.next;
        }
// прикрепляем к последнему элементу списка (top) новый (newElement)
        top.next = newElement;
        newElement.next = null;
    }

// Второй вариант метода addElement. Создание нового элемента переносим в метод
    static void addElement2(A1 root, int newValue) {
// Создаем новый элемент и присваиваем его члену a переданное через аргумент значение newValue
        A1 newElement = new A1();
        newElement.a = newValue;

        A1 top = root;
        while (top.next != null) {
            top = top.next;
        }
        top.next = newElement;
        newElement.next = null;
    }

}

 class A1 {
    int a;
    A1 next;
}

Ответы (0 шт):