Домой Учебники по Java и J2EE Как обратить вспять односвязный список в Java? (Также сложение, итерационные методы)

Как обратить вспять односвязный список в Java? (Также сложение, итерационные методы)

817
0

Обратный Единый Связанный Список — один из лучших любимых вопросов интервью для меня все время . Я помню, как задавал интервьюеру одни и те же вопросы по-разному.

В этом уроке мы рассмотрим простой способ обращения Linked List в Java.

Давайте начнем:

  • Создайте CrunchifyNode класс с crunchifyNodeValue а также nodeNextReference объект
  • Создать методы getter () и setter () для одного и того же
  • Мы переопределим метод CompareTo () согласно нашей необходимости
  • Создать класс CrunchifyReverseLinkedList.java
  • Добавьте 3 метода для разных операций
    • crunchifyAddElement ()
    • crunchifyIterateElement ()
    • crunchifyReverseElement ()
  • метод main ()
    • Сначала создайте связанный список. Добавьте 8 элементов к нему.
    • Перебрать список и распечатать
    • Перевернуть список
    • Повторите это снова и напечатайте

Вот полный код Java:

CrunchifyReverseLinkedList.java

CrunchifyReverseLinkedList.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
пакет crunchify. ком . учебник ;
/ **
* @author Crunchify.com
* Программа: лучший способ отменить Единый LinkedList в
* Java версия: 1.0.2
*
* /
общественности учебный класс CrunchifyReverseLinkedList < T > {
частный CrunchifyNode < T > headElement ;
// Перебирать элементы в CrunchifyNode
общественности недействительным crunchifyIterateElement ( ) {
CrunchifyNode < T > tempVariable знак равно headElement ;
в то время как ( правда ) {
если ( tempVariable == ноль ) {
перерыв ;
}
print ( tempVariable . getValue ( ) + ) ;
tempVariable знак равно tempVariable. crunchifyGetNextReference ( ) ;
}
}
// Обратные элементы в CrunchifyNode
общественности недействительным crunchifyReverseElement ( ) {
println ( / nReversing Linked List now … / n ) ;
CrunchifyNode < T > previousElement знак равно ноль ;
CrunchifyNode < T > currentElement знак равно headElement ;
CrunchifyNode < T > nextElement знак равно ноль ;
в то время как ( currentElement ! знак равно ноль ) {
nextElement знак равно currentElement . crunchifyGetNextReference ( ) ;
currentElement . crunchifySetNextRef ( previousElement ) ;
previousElement знак равно currentElement ;
currentElement знак равно nextElement ;
}
headElement знак равно previousElement ;
}
// Добавить элементы в CrunchifyNode
общественности недействительным crunchifyAddElement ( T элемент ) {
CrunchifyNode < T > crunchifyNode знак равно новый CrunchifyNode < T > ( ) ;
crunchifyNode . setValue ( элемент ) ;
println ( «Добавление элемента:» + элемент ) ;
CrunchifyNode < T > tempVariable знак равно headElement ;
в то время как ( правда ) {
если ( tempVariable == ноль ) {
headElement знак равно crunchifyNode ; // Только 1 элемент? Голова и Хвост указывают на то же самое
перерыв ;
} еще если ( tempVariable . crunchifyGetNextReference ( ) == ноль ) {
tempVariable. crunchifySetNextRef ( crunchifyNode ) ;
перерыв ;
} еще {
tempVariable знак равно tempVariable. crunchifyGetNextReference ( ) ;
}
}
}
// Основной метод тестирования
общественности статический недействительным главная ( Строка а []) {
CrunchifyReverseLinkedList < Integer > crunchifyLinkedList знак равно новый CrunchifyReverseLinkedList < Integer > ( ) ;
ИНТ crunchifyRandomNo ;
println ( in main () … / n ) ;
// Давайте создадим целочисленный массив с 15 значениями в нем
за ( int я знак равно 1 ; я < = 8 ; я ++ ) {
crunchifyRandomNo знак равно ( 21 + ( int ) ( Math . Random ( ) * ( ( 55 2 ) ) ) ) ; // Всего получается 8 случайных элементов
crunchifyLinkedList . crunchifyAddElement ( crunchifyRandomNo ) ;
}
println ( / nOriginal Linked List: ) ;
crunchifyLinkedList . crunchifyIterateElement ( ) ;
println ( ) ;
crunchifyLinkedList . crunchifyReverseElement ( ) ;
println ( «Перевернутый связанный список:» ) ;
crunchifyLinkedList . crunchifyIterateElement ( ) ;
}
// Утилита Simple Log с новой строкой
частный статический недействительным println ( String строка ) {
Система. вне. println ( строка ) ;
}
// Простая утилита Log
частный статический недействительным печать ( строка строка ) {
Система. вне. печать ( строка ) ;
}
}

CrunchifyNode.java

CrunchifyNode.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
пакет crunchify. ком . учебник ;
/ **
* @author Crunchify.com
* Программа: Crunchify Node Element
* Версия: 1.0.0
*
* /
общественности учебный класс CrunchifyNode < T > инвентарь Сравнимый < T > {
частный T crunchifyNodeValue ;
частный CrunchifyNode < T > nodeNextReference ;
общественности T getValue ( ) {
вернуть crunchifyNodeValue ;
}
общественности недействительным setValue ( T nodeValue ) {
это. crunchifyNodeValue знак равно nodeValue ;
}
общественности CrunchifyNode < T > crunchifyGetNextReference ( ) {
вернуть nodeNextReference ;
}
общественности недействительным crunchifySetNextRef ( CrunchifyNode < T > nodeNextReference ) {
это. nodeNextReference знак равно nodeNextReference ;
}
// @Override указывает, что объявление метода предназначено для переопределения объявления метода в супертипе.
@ Override
общественности ИНТ сравнить с ( T nodeValue ) {
если ( nodeValue == это. crunchifyNodeValue ) {
вернуть 0 ;
} еще {
вернуть 1 ;
}
}
}

Запустите программу Java в Eclipse IDE

Проверьте результат. Вот результат Eclipse Console .

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
в главная ( ) . , ,
Добавление элемента : 49
Добавление элемента : 41
Добавление элемента : 21
Добавление элемента : 43
Добавление элемента : 45
Добавление элемента : 56
Добавление элемента : 40
Добавление элемента : 63
Исходный связанный список :
49    41    21    43    45    56    40    63   
Реверсивный связанный список сейчас . , ,
Перевернутый связанный список :
63    40    56    45    43    21    41    49

Надеюсь, вы получите полное представление о том, как лучше всего обратить вспять единый LinkedList в Java. Дайте знать, если у вас появятся вопросы.

Как обратить вспять односвязный список в Java? (Также сложение, итерационные методы)

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Как использовать net.jodah.ExpiringMap Maven Java Utility для автоматического удаления объектов с истекшим сроком из HashMap - полное руководство по Java

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь