21
21
*/
22
22
23
23
public class OddEvenLinkedList {
24
- ListNode head ;
24
+ public ListNode head ;
25
25
26
26
class ListNode {
27
27
int data ;
@@ -31,6 +31,18 @@ public ListNode(int data) {
31
31
this .data = data ;
32
32
this .next = null ;
33
33
}
34
+
35
+ @ Override
36
+ public String toString () {
37
+ StringBuilder sb = new StringBuilder ();
38
+ ListNode temp = head ;
39
+ while (temp != null ) {
40
+ sb .append (temp .data ).append (" --> " );
41
+ temp = temp .next ;
42
+ }
43
+
44
+ return sb .toString ();
45
+ }
34
46
}
35
47
36
48
public void addAtTail (int data ) {
@@ -47,23 +59,59 @@ public void addAtTail(int data) {
47
59
currentNode .next = newNode ;
48
60
}
49
61
50
- public static ListNode oddEvenLinkedList (ListNode head ) {
62
+ public ListNode oddEvenLinkedList (ListNode head ) {
51
63
if (head == null ) {
52
64
return head ;
53
65
}
54
66
55
67
ListNode currentNode = head ; //1 -> 2 -> 3 -> 4 -> 5
56
68
57
- while (currentNode .next != null && currentNode .next .next != null ) {
58
- ListNode nextNode = currentNode .next ; // 2 -> 3
59
- ListNode nextToNextNode = currentNode .next .next ; // 3 -> 4
60
- currentNode .next = currentNode .next .next ; //1 -> 3 -> 4
61
- //TODO:
62
-
69
+ int size = 0 ;
70
+ while (currentNode != null ) {
71
+ size ++;
72
+ currentNode = currentNode .next ;
73
+ }
63
74
75
+ currentNode = head ;
76
+ int counter = size / 2 ;
64
77
78
+ while (currentNode .next != null && currentNode .next .next != null && counter > 0 ) {
79
+ int data = currentNode .next .data ;
80
+ currentNode .next = currentNode .next .next ;
81
+ addAtTail (data );
82
+ currentNode = currentNode .next ;
83
+ counter --;
65
84
}
66
85
86
+ return head ;
87
+ }
88
+
89
+ public static void main (String [] args ) {
90
+ //Odd length
91
+ OddEvenLinkedList oddEvenLinkedList = new OddEvenLinkedList ();
92
+ oddEvenLinkedList .addAtTail (1 );
93
+ oddEvenLinkedList .addAtTail (2 );
94
+ oddEvenLinkedList .addAtTail (3 );
95
+ oddEvenLinkedList .addAtTail (4 );
96
+ oddEvenLinkedList .addAtTail (5 );
97
+
98
+
99
+ System .out .println ("Original odd length linked list: " + oddEvenLinkedList .head );
100
+ System .out .println ("linked list after odd even position shuffling: " +oddEvenLinkedList .oddEvenLinkedList (oddEvenLinkedList .head ));
101
+ System .out .println ();
102
+
103
+ //Even length
104
+ oddEvenLinkedList = new OddEvenLinkedList ();
105
+ oddEvenLinkedList .addAtTail (1 );
106
+ oddEvenLinkedList .addAtTail (2 );
107
+ oddEvenLinkedList .addAtTail (3 );
108
+ oddEvenLinkedList .addAtTail (4 );
109
+ oddEvenLinkedList .addAtTail (5 );
110
+ oddEvenLinkedList .addAtTail (6 );
111
+
112
+ System .out .println ("Original even length linked list: " + oddEvenLinkedList .head );
113
+ System .out .println ("linked list after odd even position shuffling: " +oddEvenLinkedList .oddEvenLinkedList (oddEvenLinkedList .head ));
114
+
67
115
68
116
}
69
117
0 commit comments