File tree Expand file tree Collapse file tree 13 files changed +64
-20
lines changed Expand file tree Collapse file tree 13 files changed +64
-20
lines changed Original file line number Diff line number Diff line change 11
11
* @date: 6/16/15
12
12
* @time: 1:00 PM
13
13
*/
14
- public class DoubleLinkedList <E > implements LinkedList <E > {
14
+ public class DoubleLinkedList <E extends Comparable < E > > implements LinkedList <E > {
15
15
16
16
public DoubleLinkedNode <E > head ;
17
17
public int size ;
@@ -196,7 +196,7 @@ public void printList() {
196
196
out.println(curr.item + "]");*/
197
197
}
198
198
199
- public static <E > DoubleLinkedList <E > getLinkedList (DoubleLinkedNode <E > node ) {
199
+ public static <E extends Comparable < E > > DoubleLinkedList <E > getLinkedList (DoubleLinkedNode <E > node ) {
200
200
DoubleLinkedList <E > linkedList = new DoubleLinkedList <>();
201
201
linkedList .head = node ;
202
202
return linkedList ;
Original file line number Diff line number Diff line change 7
7
* @date: 6/18/15
8
8
* @time: 2:42 PM
9
9
*/
10
- public class DoubleLinkedNode <E > {
10
+ public class DoubleLinkedNode <E extends Comparable < E > > {
11
11
12
12
public E item ;
13
13
public DoubleLinkedNode <E > next ;
Original file line number Diff line number Diff line change 7
7
* @date: 6/16/15
8
8
* @time: 12:53 PM
9
9
*/
10
- public interface LinkedList <E > {
10
+ public interface LinkedList <E extends Comparable < E > > {
11
11
12
12
/**
13
13
* Appends the specified element to the end of this list.
Original file line number Diff line number Diff line change 11
11
* @date: 6/16/15
12
12
* @time: 1:00 PM
13
13
*/
14
- public class SingleLinkedList <E > implements LinkedList <E > {
14
+ public class SingleLinkedList <E extends Comparable < E > > implements LinkedList <E > {
15
15
16
16
public SingleLinkedNode <E > head ;
17
17
public int size ;
Original file line number Diff line number Diff line change 7
7
* @date: 6/18/15
8
8
* @time: 2:37 PM
9
9
*/
10
- public class SingleLinkedNode <E > {
10
+ public class SingleLinkedNode <E extends Comparable < E > > {
11
11
12
12
public E item ;
13
13
public SingleLinkedNode <E > next ;
Original file line number Diff line number Diff line change 10
10
* @date: 6/20/15
11
11
* @time: 1:00 PM
12
12
*/
13
- public class CloneWithRandPointers <E > extends DoubleLinkedList <E > {
13
+ public class CloneWithRandPointers <E extends Comparable < E > > extends DoubleLinkedList <E > {
14
14
15
- public static <E > DoubleLinkedList <E > clone (DoubleLinkedNode <E > node ) {
15
+ public static <E extends Comparable < E > > DoubleLinkedList <E > clone (DoubleLinkedNode <E > node ) {
16
16
DoubleLinkedNode <E > curr = node ;
17
17
18
18
// copy node and insert after it
@@ -57,6 +57,9 @@ public static void main(String a[]) {
57
57
linkedList .getNode (3 ).prev = linkedList .getNode (1 );
58
58
linkedList .printList ();
59
59
DoubleLinkedList <Integer > clonedList = clone (linkedList .getNode (0 ));
60
+ clonedList .size = 4 ;
61
+ clonedList .set (1 , 567 );
60
62
clonedList .printList ();
63
+ linkedList .printList ();
61
64
}
62
65
}
Original file line number Diff line number Diff line change 10
10
* @date: 6/18/15
11
11
* @time: 2:35 PM
12
12
*/
13
- public class DeleteNode <E > extends SingleLinkedList <E > {
13
+ public class DeleteNode <E extends Comparable < E > > extends SingleLinkedList <E > {
14
14
15
15
/**
16
16
* Given a pointer to a node, delete it.
17
17
*
18
18
* @param node
19
19
* @param <E>
20
20
*/
21
- public static <E > void deleteNode (SingleLinkedNode <E > node ) {
21
+ public static <E extends Comparable < E > > void deleteNode (SingleLinkedNode <E > node ) {
22
22
// assert node isn't the last node in the linked list
23
23
node .item = node .next .item ;
24
24
node .next = node .next .next ;
Original file line number Diff line number Diff line change 12
12
* @date: 6/19/15
13
13
* @time: 9:24 AM
14
14
*/
15
- public class DetectLoop <E > extends SingleLinkedList <E > {
15
+ public class DetectLoop <E extends Comparable < E > > extends SingleLinkedList <E > {
16
16
17
17
/**
18
18
* Uses Flyod's Cycle Finding algorithm.
@@ -30,7 +30,7 @@ public class DetectLoop<E> extends SingleLinkedList<E> {
30
30
* @param node
31
31
* @return
32
32
*/
33
- public static <E > boolean isLoopPresent (SingleLinkedNode <E > node ) {
33
+ public static <E extends Comparable < E > > boolean isLoopPresent (SingleLinkedNode <E > node ) {
34
34
SingleLinkedNode <E > prev = node , curr = node ;
35
35
while (curr != null && curr .next != null ) {
36
36
prev = prev .next ;
@@ -51,7 +51,7 @@ public static <E> boolean isLoopPresent(SingleLinkedNode<E> node) {
51
51
* @param node
52
52
* @return
53
53
*/
54
- public static <E > boolean isLoopPresentUsingHashMap (SingleLinkedNode <E > node ) {
54
+ public static <E extends Comparable < E > > boolean isLoopPresentUsingHashMap (SingleLinkedNode <E > node ) {
55
55
HashMap <SingleLinkedNode <E >, Boolean > map = new HashMap <>();
56
56
SingleLinkedNode <E > curr = node ;
57
57
while (curr != null ) {
Original file line number Diff line number Diff line change
1
+ package me .ramswaroop .linkedlists ;
2
+
3
+ import me .ramswaroop .common .SingleLinkedList ;
4
+ import me .ramswaroop .common .SingleLinkedNode ;
5
+
6
+ /**
7
+ * Created by IntelliJ IDEA.
8
+ *
9
+ * @author: ramswaroop
10
+ * @date: 6/21/15
11
+ * @time: 10:20 PM
12
+ */
13
+ public class InsertionInSortedList <E extends Comparable <E >> extends SingleLinkedList <E > {
14
+
15
+ /**
16
+ * Insert an element in the sorted linked list.
17
+ *
18
+ * @param item
19
+ */
20
+ public void insert (E item ) {
21
+ int index = 0 ;
22
+ SingleLinkedNode <E > node = head ;
23
+ while (node != null ) {
24
+ if (item .compareTo (node .item ) < 0 ) break ;
25
+ index ++;
26
+ node = node .next ;
27
+ }
28
+ add (index , item );
29
+ }
30
+
31
+ public static void main (String a []) {
32
+ InsertionInSortedList <Integer > linkedList = new InsertionInSortedList <>();
33
+ linkedList .add (00 );
34
+ linkedList .add (11 );
35
+ linkedList .add (22 );
36
+ linkedList .add (33 );
37
+ linkedList .printList ();
38
+ linkedList .insert (13 );
39
+ linkedList .printList ();
40
+ }
41
+ }
Original file line number Diff line number Diff line change 12
12
* @date: 6/18/15
13
13
* @time: 2:35 PM
14
14
*/
15
- public class IsPalindrome <E > extends SingleLinkedList <E > {
15
+ public class IsPalindrome <E extends Comparable < E > > extends SingleLinkedList <E > {
16
16
17
17
/**
18
18
* Uses Stack to test whether a linked list starting
@@ -21,7 +21,7 @@ public class IsPalindrome<E> extends SingleLinkedList<E> {
21
21
* @param node
22
22
* @return
23
23
*/
24
- public static <E > boolean isPalindrome (SingleLinkedNode <E > node ) {
24
+ public static <E extends Comparable < E > > boolean isPalindrome (SingleLinkedNode <E > node ) {
25
25
SingleLinkedNode <E > curr = node ;
26
26
Stack <SingleLinkedNode <E >> stack = new LinkedStack <>();
27
27
Original file line number Diff line number Diff line change 10
10
* @date: 6/18/15
11
11
* @time: 10:34 PM
12
12
*/
13
- public class MiddleNode <E > extends SingleLinkedList <E > {
13
+ public class MiddleNode <E extends Comparable < E > > extends SingleLinkedList <E > {
14
14
15
- public static <E > SingleLinkedNode <E > getMiddleNode (SingleLinkedNode <E > node ) {
15
+ public static <E extends Comparable < E > > SingleLinkedNode <E > getMiddleNode (SingleLinkedNode <E > node ) {
16
16
SingleLinkedNode <E > slow = node ;
17
17
SingleLinkedNode <E > fast = node ;
18
18
while (fast != null && fast .next != null ) {
Original file line number Diff line number Diff line change 10
10
* @date: 6/18/15
11
11
* @time: 6:49 PM
12
12
*/
13
- public class NthNodeFromLast <E > extends SingleLinkedList <E > {
13
+ public class NthNodeFromLast <E extends Comparable < E > > extends SingleLinkedList <E > {
14
14
15
- public static <E > SingleLinkedNode <E > getNthNodeFromLast (SingleLinkedNode <E > node , int n ) {
15
+ public static <E extends Comparable < E > > SingleLinkedNode <E > getNthNodeFromLast (SingleLinkedNode <E > node , int n ) {
16
16
SingleLinkedNode <E > slow = node ;
17
17
SingleLinkedNode <E > fast = node ;
18
18
// move the fast reference ahead of slow reference by 'n' nodes
Original file line number Diff line number Diff line change 10
10
* @date: 6/19/15
11
11
* @time: 9:24 AM
12
12
*/
13
- public class ReverseList <E > extends SingleLinkedList <E > {
13
+ public class ReverseList <E extends Comparable < E > > extends SingleLinkedList <E > {
14
14
15
15
/**
16
16
* Reverses the linked list using 3 references prev, curr and next.
You can’t perform that action at this time.
0 commit comments