From 518e74e00c78c512d3739e1238a7c60a9fc9bf63 Mon Sep 17 00:00:00 2001 From: Bradley Morris Date: Sat, 2 Mar 2019 14:39:32 +0200 Subject: [PATCH 01/21] Insertion sort practice Signed-off-by: Gavin Morris --- .idea/workspace.xml | 86 +++++++++---------- README.md | 12 +++ .../za/co/oldtimerza/sorts/InsertionSort.java | 7 ++ 3 files changed, 58 insertions(+), 47 deletions(-) create mode 100644 sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 30bd90c..81689a9 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,16 +1,7 @@ - - - - - - - - - - + @@ -32,7 +23,7 @@ - + @@ -73,7 +64,7 @@ - + @@ -84,11 +75,11 @@ - + - - + + @@ -99,8 +90,8 @@ - - + + @@ -110,11 +101,11 @@ - + - - + + @@ -262,7 +253,7 @@ - + @@ -391,12 +382,6 @@ - - - - - - @@ -421,9 +406,16 @@ + + + + + + + @@ -435,7 +427,7 @@ - + @@ -607,44 +599,44 @@ - + - - - - - - - + + - + - - + + + + - + - - + + - - + + - + - - + + + + + diff --git a/README.md b/README.md index 991f72f..a02db71 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,14 @@ # java-experiments A simple repo for experimenting with Java features and algorithms. + +Goal: + + - Practive Java new features: Streams, pass-by-value, etc. + + - Practice Sort algorithms: Quick sort, merge sort, etc. + + - Practice Search algorithms: Binary search, etc. + + - Practice Design patterns: Builder pattern, decorator patterns, etc. + + diff --git a/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java new file mode 100644 index 0000000..4f55223 --- /dev/null +++ b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java @@ -0,0 +1,7 @@ +package za.co.oldtimerza.sorts; + +public class InsertionSort { + public List sort(List sortableList){ + + } +} From ac8c333da23f686debf72fc25b4748a1eb222520 Mon Sep 17 00:00:00 2001 From: Gavin Morris Date: Sat, 6 Apr 2019 16:35:01 -0400 Subject: [PATCH 02/21] Insertion sort practice Signed-off-by: Gavin Morris --- .idea/workspace.xml | 222 ++++++------------ .../za/co/oldtimerza/sorts/InsertionSort.java | 7 + 2 files changed, 83 insertions(+), 146 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 81689a9..ac369ec 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,10 @@ - + + + + @@ -19,53 +22,13 @@ za.co.oldtimerza.sorts.* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -76,40 +39,19 @@ - - - - - - - - - - - - - + - - + + - - + + - - - - - - - - - @@ -122,7 +64,9 @@ + @@ -158,9 +103,9 @@ @@ -168,7 +113,6 @@ - @@ -176,11 +120,6 @@ - - - - - @@ -216,46 +155,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -303,7 +265,14 @@ @@ -340,7 +309,6 @@ - @@ -359,7 +327,7 @@ - + @@ -560,8 +528,8 @@ - - + + @@ -627,7 +595,6 @@ From f52be1c34308d4134e70e9b8f4b1e191d7bf2fc5 Mon Sep 17 00:00:00 2001 From: Gavin Morris Date: Sat, 6 Apr 2019 16:41:28 -0400 Subject: [PATCH 04/21] Insertion sort practice Signed-off-by: Gavin Morris --- .../za/co/oldtimerza/sorts/InsertionSort.class | Bin 0 -> 837 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class diff --git a/sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class b/sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class new file mode 100644 index 0000000000000000000000000000000000000000..175b15c935e281c83a5cfb0735018a250e2c1ed2 GIT binary patch literal 837 zcma)4U279T6g{(>X4~o3)JCJ$kE*D&Ra|^dDTp8lt3E^uK2DM$owD7P*@;kpmA+U| z@CW###4|h5w6PDq%>6p|o^vnr^Vhc@0G?q>qK!?7CEQGKOCrW*g4+r12(PYc}N&X3ebl}()~vfR|Jzq6PSNIlkbd4RzBzlh#>Nhcrv z$a=Vd-3xJ{$_XVoJ<+zmPdO_CGbxpuTJD!GYPz^-QRu}efi-h>bph$O(c`d-98^;~ z(l1SO*mFmE>JO75!E%ZoIs)DKrJh@>PQru-|8sC2t!ZxdemgwUBZqtZ18x2Z@DB)2 z!*_*IMk{ESc26O`(1{@VwnGxD^wXK2VvUi&C3J}L%{gu4(YueoBKk}(KGU5v-MxU| z6yNP9uj4YOY|syreWuII6=ot_rN;x%^9+ZyF|GWL`28tbub<3WWHWh{tE3In-GKbd dBxg*^#9bq2)NlqpzUDbYt;^b+{d%M0#&61nu-^ax literal 0 HcmV?d00001 From 354ee87a72f09bca35952a5bb5589c570b8108bc Mon Sep 17 00:00:00 2001 From: Gavin Morris Date: Sat, 6 Apr 2019 17:52:44 -0400 Subject: [PATCH 05/21] Insertion sort practice Signed-off-by: Gavin Morris --- .idea/workspace.xml | 243 +++++++++++++----- .../za/co/oldtimerza/sorts/InsertionSort.java | 27 +- .../oldtimerza/sorts/InsertionSortTests.java | 27 ++ .../co/oldtimerza/sorts/InsertionSort.class | Bin 837 -> 1151 bytes 4 files changed, 231 insertions(+), 66 deletions(-) create mode 100644 sorts/src/test/java/za/co/oldtimerza/sorts/InsertionSortTests.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index cce74f9..0515309 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,12 @@ - + + + + + + @@ -19,17 +24,24 @@ za.co.oldtimerza.sorts.* + + - - + + + + + @@ -38,8 +50,8 @@ - - + + @@ -49,6 +61,18 @@ + + + + + + + + + + + + @@ -87,6 +111,7 @@ @@ -98,6 +123,12 @@ + + + + @@ -153,7 +243,23 @@ - + + + + + + + + @@ -216,34 +322,20 @@ - - - - - - - - + + - @@ -272,43 +364,58 @@ - - - - + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + + + + + @@ -319,18 +426,18 @@ - + - + - - + + - + @@ -380,6 +487,10 @@ + + @@ -490,16 +601,6 @@ - - - - - - - - - - @@ -514,22 +615,42 @@ + + + + + + + + + + + + + + + + + - - + + + + + - - + + diff --git a/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java index 83305f2..d1678cd 100644 --- a/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java +++ b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java @@ -1,14 +1,31 @@ package za.co.oldtimerza.sorts; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class InsertionSort { - public List sort(List sortableList){ + public static List sort(List sortableList){ return insertionSort(sortableList); } - public List insertionSort(List sortableList){ - List sortedList = new ArrayList(); - return sortedList; + private static List insertionSort(List arr){ + + int i; + int value; + + for (i=1; i< arr.size(); i++){ + value = arr.get(i); + int j = i; + + while(j>0 && value sortableList = Arrays.asList(4, 3, 2, 9, 11, 12, 19, 1, 0, 45, 23, 15); + + List sortedList = insertSort.sort(sortableList); + + List expectedResult = Arrays.asList(0, 1, 2, 3, 4, 9, 11, 12, 15, 19, 23, 45); + Assert.assertEquals(expectedResult, sortedList); + } +} \ No newline at end of file diff --git a/sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class b/sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class index 175b15c935e281c83a5cfb0735018a250e2c1ed2..d8b549c1e0bbb1d3758fb1b7c4d9b9e24787e9c4 100644 GIT binary patch literal 1151 zcma)4OHUI~7(I8U4=BUCt=fkQLTN`~#AhN%;v*(CjVx;F#+Xdov0hSU%ydd3Yk!9e zHpHE76kHhB?oIqP;<=?jTf1;^AK$s>yZ4;$yFdSY`wn0gcVmcQK88_T8N&h=)s%~3 zDTXleDk!L(8O7Bot_eier7MFC0X<)+2!tMabw^;bBwgoOd%NoR&+TfH$V|zr+0BaW zOBHv)Q1C{!1ahTa+p2k%*Q^I}+wmE-JU?hzMYrYnf%M!m!!_QnV1fC3Y0KWRt#%-r zR!O#kwZb4EU?{G7OA!R7{$(WlCB1ulB5QGgyM7!uZMQ*5fzxpOwGGM{Ez5>$2W_AJ zN`sn)Ck+Z6&Jq}xz19W97DrJaykj@pd``E0pNJHQmA$rKbDqdfmHR5TqN-$I42FRe zW}{d(uma1#b*u_ZcWT&c%D@eEdK0${+{PV&h5zXbYkPLnW_8P{vD_2=4N|R>yGnPy zKo@$$At#Y9cFWNbah%Gsjz~ACbZxd2aVcNy=|Gn^G&R~O&*p1^WdG$SZNnTtc8nh# z&>>W5IFB>3xC*Xe^DD$>ZZu4AjXCb?Hs5-^2nuA`X2ELke~!D;dVv`+-|p5&3f zU~OW6`s8$s)}J!SqArz=B$(b5Lxatr4|=E9yM|=5o0fi9=la%y>10A^Gw6sUytXrrYN-((M2dSB+Z=~+=^kItfyJU=DlQ;A3DF)<_oOjO_=-+6W^t72{R zE2s&D!14|K5KZc6sv|70Q&>ccF1I{j73c0Byh2{6f|+eyZ?~Oe#6Z99qL;ADm=)T6 zw4217ta2h)qvDsS9O9ZaV72cEE-K8OAO2&kizdV{#~r%ooqr@dB^ewGI)q9MtuNx8 R9%?x45HB Date: Sat, 6 Apr 2019 19:11:40 -0400 Subject: [PATCH 06/21] Insertion sort practice Signed-off-by: Gavin Morris --- .idea/workspace.xml | 182 ++++++++++++------ .../za/co/oldtimerza/sorts/SelectSort.java | 33 ++++ .../co/oldtimerza/sorts/SelectSortTests.java | 27 +++ 3 files changed, 186 insertions(+), 56 deletions(-) create mode 100644 sorts/src/main/java/za/co/oldtimerza/sorts/SelectSort.java create mode 100644 sorts/src/test/java/za/co/oldtimerza/sorts/SelectSortTests.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0515309..a79e4dc 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,11 +1,10 @@ - - + + + - - @@ -33,8 +32,8 @@ - - + + @@ -48,26 +47,28 @@ - + - - + + - - + + - + - - + + + + @@ -113,6 +114,8 @@ @@ -243,8 +246,8 @@ - - + + @@ -322,16 +325,32 @@ + + + + + + + + - + - + @@ -378,46 +397,62 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + - + @@ -426,15 +461,15 @@ - + - - - - - + + + + + @@ -447,6 +482,17 @@ + + + @@ -144,6 +114,8 @@ + + @@ -214,8 +186,6 @@ + @@ -337,11 +345,11 @@ - - + + + - @@ -413,13 +421,17 @@ - - - @@ -447,6 +459,9 @@ + + + @@ -461,7 +476,7 @@ - + @@ -470,15 +485,15 @@ - + - + - + @@ -488,7 +503,7 @@ - + @@ -712,47 +727,66 @@ - + - - + + - - + + - + - - + + - - + - + - - + + + + - + - - + + + + + + + + + - - - + + + + + + + + + + + + + + diff --git a/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists b/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists new file mode 100644 index 0000000..219f145 --- /dev/null +++ b/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists @@ -0,0 +1,85 @@ +import java.util.List; + +public class Node { + private int data; + private Node next; + private Node prev; + + public void Node(int data, Node prev,Node next){ + + this.data =data; + this.next = next; + this.prev = prev; + } + + public Node getNext(){ + if(this.next != null){ + return this.next(); + } + } + + public void setNext(Node next) { + this.next = next; + } + + public Node getPrev(){ + if(this.prev != null){ + return this.prev; + } + } + + public void setPrev(Node prev) { + this.prev = prev; + } + + public getData(){ + return this.data; + } + public setData(int data){ + this.data = data; + } +} + +public class LinkedList{ + private List nodes; + + public void LinkedList(List node){ + this.nodes = new List; + } + + public Node get(int identifier){ + return nodes.get(identifier); + } + } + + public string push(int data){ + for (int i = this.nodes.size(); i > 0; i--) { + temp = this.nodes.get(i) + nodes.set(i+1,temp) + } + nodes.set(0, new_node) + Node new_node = new Node(data,null,this.nodes.get(1)) + string success = 'Successfully inserted node' + return success + } + + public string put(int data){ + Node new_node = new Node; + Node last_node = nodes.get(-1); + new_node.setPrev(last_node); + new_node.setNext(null); + last_node.setNext(new_node); + } + + public string insert(Node prev, int data){ + Node new_node = new Node(data); + this.nodes.set(position, new_node); + new_node.setPrev(prev); + new_node.setNext(prev.getNext()); + prev.getNext().setPrev(new_node); + prev.setNext(new_node); + } +} + + + diff --git a/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java index 0a068ab..ebe1f5a 100644 --- a/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java +++ b/sorts/src/main/java/za/co/oldtimerza/sorts/InsertionSort.java @@ -4,28 +4,26 @@ import java.util.List; public class InsertionSort { - public List sort(List sortableList){ + public List sort(List sortableList) { return insertionSort(sortableList); } - private List insertionSort(List arr){ + private int test; - int i; - int value; + private List insertionSort(List arr) { - for (i=1; i< arr.size(); i++){ - value = arr.get(i); + for (int i = 1; i < arr.size(); i++) { + int value = arr.get(i); int j = i; - while(j>0 && value 0 && value < arr.get(j - 1)) { + arr.set(j, arr.get(j - 1)); j--; } - arr.set(j,value); + arr.set(j, value); } return arr; } } - From 4e647c071dcde4885e4cf6e0876c10fe4be47570 Mon Sep 17 00:00:00 2001 From: Gavin Morris Date: Sun, 12 May 2019 20:51:52 -0400 Subject: [PATCH 11/21] -Added DoublyLinkedList data structure Signed-off-by: Gavin Morris --- .idea/compiler.xml | 1 + .idea/modules.xml | 1 - .idea/workspace.xml | 373 ++++++++++++------ data-structures/pom.xml | 32 ++ .../LinkedLists | 85 ---- .../co/oldtimerza/data/DoublyLinkedList.java | 80 ++++ .../main/java/za/co/oldtimerza/data/Node.java | 32 ++ .../za/co/oldtimerza/data/NodeInterface.java | 10 + pom.xml | 4 +- sorts/sorts.iml | 18 - .../za/co/oldtimerza/sorts/BubbleSort.class | Bin 1147 -> 0 bytes .../co/oldtimerza/sorts/InsertionSort.class | Bin 1151 -> 0 bytes .../za/co/oldtimerza/sorts/MergeSort.class | Bin 1926 -> 0 bytes .../za/co/oldtimerza/sorts/QuickSort.class | Bin 1656 -> 0 bytes .../za/co/oldtimerza/sorts/SelectSort.class | Bin 1188 -> 0 bytes .../co/oldtimerza/sorts/BubbleSortTests.class | Bin 1411 -> 0 bytes .../oldtimerza/sorts/InsertionSortTests.class | Bin 1426 -> 0 bytes .../co/oldtimerza/sorts/MergeSortTests.class | Bin 1404 -> 0 bytes .../co/oldtimerza/sorts/QuickSortTests.class | Bin 1408 -> 0 bytes .../co/oldtimerza/sorts/SelectSortTests.class | Bin 1411 -> 0 bytes 20 files changed, 407 insertions(+), 229 deletions(-) create mode 100644 data-structures/pom.xml delete mode 100644 data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists create mode 100644 data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java create mode 100644 data-structures/src/main/java/za/co/oldtimerza/data/Node.java create mode 100644 data-structures/src/main/java/za/co/oldtimerza/data/NodeInterface.java delete mode 100644 sorts/sorts.iml delete mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/BubbleSort.class delete mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/InsertionSort.class delete mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/MergeSort.class delete mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/QuickSort.class delete mode 100644 sorts/target/classes/za/co/oldtimerza/sorts/SelectSort.class delete mode 100644 sorts/target/test-classes/za/co/oldtimerza/sorts/BubbleSortTests.class delete mode 100644 sorts/target/test-classes/za/co/oldtimerza/sorts/InsertionSortTests.class delete mode 100644 sorts/target/test-classes/za/co/oldtimerza/sorts/MergeSortTests.class delete mode 100644 sorts/target/test-classes/za/co/oldtimerza/sorts/QuickSortTests.class delete mode 100644 sorts/target/test-classes/za/co/oldtimerza/sorts/SelectSortTests.class diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 4c142a6..aba4b74 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -8,6 +8,7 @@ + diff --git a/.idea/modules.xml b/.idea/modules.xml index d71d76f..57c4b36 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,6 @@ - diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1fb1f29..7a2a879 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,9 +2,16 @@ - + + + + + + - + + + @@ -22,6 +29,8 @@ + + - - - - - - - - - - - - - - - - - - - - - @@ -627,13 +681,6 @@ - - - - - - - @@ -645,20 +692,6 @@ - - - - - - - - - - - - - - @@ -683,20 +716,6 @@ - - - - - - - - - - - - - - @@ -707,16 +726,6 @@ - - - - - - - - - - @@ -749,9 +758,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -761,32 +813,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-structures/pom.xml b/data-structures/pom.xml new file mode 100644 index 0000000..573e268 --- /dev/null +++ b/data-structures/pom.xml @@ -0,0 +1,32 @@ + + + 4.0.0 + + za.co.oldtimerza.javaexperiments.data-structures + data-structures + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + + + + + + junit + junit + 4.12 + provided + + + + \ No newline at end of file diff --git a/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists b/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists deleted file mode 100644 index 219f145..0000000 --- a/data-structures/src/main/java/za.co.oldtimerza.data-structures/LinkedLists +++ /dev/null @@ -1,85 +0,0 @@ -import java.util.List; - -public class Node { - private int data; - private Node next; - private Node prev; - - public void Node(int data, Node prev,Node next){ - - this.data =data; - this.next = next; - this.prev = prev; - } - - public Node getNext(){ - if(this.next != null){ - return this.next(); - } - } - - public void setNext(Node next) { - this.next = next; - } - - public Node getPrev(){ - if(this.prev != null){ - return this.prev; - } - } - - public void setPrev(Node prev) { - this.prev = prev; - } - - public getData(){ - return this.data; - } - public setData(int data){ - this.data = data; - } -} - -public class LinkedList{ - private List nodes; - - public void LinkedList(List node){ - this.nodes = new List; - } - - public Node get(int identifier){ - return nodes.get(identifier); - } - } - - public string push(int data){ - for (int i = this.nodes.size(); i > 0; i--) { - temp = this.nodes.get(i) - nodes.set(i+1,temp) - } - nodes.set(0, new_node) - Node new_node = new Node(data,null,this.nodes.get(1)) - string success = 'Successfully inserted node' - return success - } - - public string put(int data){ - Node new_node = new Node; - Node last_node = nodes.get(-1); - new_node.setPrev(last_node); - new_node.setNext(null); - last_node.setNext(new_node); - } - - public string insert(Node prev, int data){ - Node new_node = new Node(data); - this.nodes.set(position, new_node); - new_node.setPrev(prev); - new_node.setNext(prev.getNext()); - prev.getNext().setPrev(new_node); - prev.setNext(new_node); - } -} - - - diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java b/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java new file mode 100644 index 0000000..72a5873 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java @@ -0,0 +1,80 @@ +package za.co.oldtimerza.data; + +public class DoublyLinkedList{ + private Node head = null; + private Node tail = null; + + public DoublyLinkedList(){ + + } + + public void setHead(Node node){ + if(this.head == null){ + this.head = node; + } + else{ + Node temp = this.head; + this.head = node; + this.head.setNext(temp); + } + } + + public void setTail(Node node){ + if(this.tail == null){ + this.head = node; + } + else{ + this.tail.setNext(node); + this.tail = node; + } + } + + public Node get(Node node){ + Node n = this.head; + while(n.getNext() != null){ + if(n == node){ + return n; + } + else{ + n = n.getNext(); + } + } + return null; + } + + public Node getLastNode(){ + + if(this.tail == null){ + Node n = this.head; + while(n.getNext() != null){ + n = n.getNext(); + } + this.tail = n; + return this.tail; + } + else{ + return this.tail; + } + } + + public void add(Node newnode){ + if(this.head == null){ + this.head = newnode; + } + else{ + newnode.setPrev(this.getLastNode()); + newnode.setNext(null); + this.getLastNode().setNext(newnode); + } + } + + public void addAtPosition(Node position, Node newnode){ + Node n0 = this.get(position); + Node n1 = n0.getNext(); + + n0.setNext(newnode); + n1.setPrev(newnode); + newnode.setPrev(n0); + newnode.setNext(n1); + } +} diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Node.java b/data-structures/src/main/java/za/co/oldtimerza/data/Node.java new file mode 100644 index 0000000..84bd4b1 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Node.java @@ -0,0 +1,32 @@ +package za.co.oldtimerza.data; + +public class Node{ + + private Node prev = null; + private Node next = null; + private T data = null; + + public Node getPrev() { + return prev; + } + + public void setPrev(Node prev) { + this.prev = prev; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } +} \ No newline at end of file diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/NodeInterface.java b/data-structures/src/main/java/za/co/oldtimerza/data/NodeInterface.java new file mode 100644 index 0000000..045471c --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/NodeInterface.java @@ -0,0 +1,10 @@ +package za.co.oldtimerza.data; + +public interface NodeInterface { + T getData(); + E getNext(); + E getPrev(); + void setData(T data); + void setNext(E node); + void setPrev(E node); +} diff --git a/pom.xml b/pom.xml index 6c77d6b..d521737 100644 --- a/pom.xml +++ b/pom.xml @@ -11,8 +11,9 @@ java-experiments=sort pass-by + data-structures + sorts - junit @@ -21,5 +22,4 @@ test - \ No newline at end of file diff --git a/sorts/sorts.iml b/sorts/sorts.iml deleted file mode 100644 index ea1c5c2..0000000 --- a/sorts/sorts.iml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/sorts/target/classes/za/co/oldtimerza/sorts/BubbleSort.class b/sorts/target/classes/za/co/oldtimerza/sorts/BubbleSort.class deleted file mode 100644 index c7688a706d668839b1cd67d5195504b190606d1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1147 zcmah{TWb?R7(KI_OOvj>ruC9Ud$Db@YS(&wNDZh^2`u)Z5(PonB-=P8-N*ZxR#&Io<>jJTL>B*odpy%>sfym=#%@r88rRP3v?^ay@nNw*nGG#ZbPNVGj zQu*CrBzP@b0*m&(V^y10vr!A=uItllHT|GvJ!)47-lARL)hZ^ikh6E3J;!PXvSHb> z6%_Kr0Rcl{)sGZFVB%lI>>!`FZ+e`ThOq0Q-*CLTRq_J2?)rry=_Iyf-E)Gr&*to5 zPG=Vl6FnOxkgS~aEfC#v8g2eVl(=@Nv*Y`;Bw<_4wqJEOq|$f%RI62`kAYDb1}Fdj0JfxTUhUamT=2+!L7p?>H#w={1{`9k)uA#|G!3CMNeujW2`T z^}0*UOs>>bp~E07rJ5ts3(8@mdP@OUa-}}uySOt;;~jxEw*_VgFYiqY^L)%nK5jsV zP`YqGN6+FZct*{y5T9sh7~>x61Y;Pdt)K*80+T!wn8Gwss`%ka@e#C-4CsBuiGku2 zW|*Jl>Rp$@d3qPPG+ZP%j;VX?FGTnO+xmLiJccfCh?kKEnb1zx4)MgyL~6%~X!wEX z7sQHLGt=k3$D9ImW5yZ4;$yFdSY`wn0gcVmcQK88_T8N&h=)s%~3 zDTXleDk!L(8O7Bot_eier7MFC0X<)+2!tMabw^;bBwgoOd%NoR&+TfH$V|zr+0BaW zOBHv)Q1C{!1ahTa+p2k%*Q^I}+wmE-JU?hzMYrYnf%M!m!!_QnV1fC3Y0KWRt#%-r zR!O#kwZb4EU?{G7OA!R7{$(WlCB1ulB5QGgyM7!uZMQ*5fzxpOwGGM{Ez5>$2W_AJ zN`sn)Ck+Z6&Jq}xz19W97DrJaykj@pd``E0pNJHQmA$rKbDqdfmHR5TqN-$I42FRe zW}{d(uma1#b*u_ZcWT&c%D@eEdK0${+{PV&h5zXbYkPLnW_8P{vD_2=4N|R>yGnPy zKo@$$At#Y9cFWNbah%Gsjz~ACbZxd2aVcNy=|Gn^G&R~O&*p1^WdG$SZNnTtc8nh# z&>>W5IFB>3xC*Xe^DD$>ZZu4AjXCb?Hs5-^2nuA`X2ELke~!D;dVv`+-|p5&3f zU~OW6`s8$s)}J!SqArz=B$(b5Lxatr4|=E9yM|=5o0fi9=la%y>10A^Gw6sUytQnl=OB2vq>Z|r-K7MYr}Tmw>BJFhRThK<*Zw-RC>#(`}d_MFjanJ6)KHF!>Rgm z%XX=G4cGSyE4Ev+*C>`4S(%7Ump844R-x%jr%;xjUz+JO2$%}1&QSn?ftL}ZC)3$^ z&`#-G2X-OU9jjg|EZ2RzX1k?DrqjD7Yjw+Sx~#3-nNxSC&P2PT1o~9=Yt0QONM1+* zu`H1A+7{ih@3AVwm9_h7C1W*aQS8j3)KN+|rh4y5*YnFkz~L^X3M2!>-SDiqYkN(H zhi-Qs*1edH47!8x22k={-fErpyt8EDGZo+9b*ZUOf2BKz;HAuH(b}+ zQNv(j5lbfC!3`5{;+%AkjcQ!Wd3K{B;P7kM0 z_v9lc&U?ac#%eY(sq}KI_~7i&mBSUYs#UdntRbzvnNK(g(z~_wz~2dCQSXs;f8BDL z49@;+H6GeH%S+qO3l838-bM`YJxHyb*iYZDOy*|J+rC31ABv*w$8_*J>CXP@O+>NN>$hN3@ zN_(7s2W?u&NUy+mkhzxdc{Ubs@f(u!dM=WU$o@0>q75p$7|V~7K}DWInE{C-`Eet( zDR5vr{HA@}bQEn~f7$u)MLV78=%i!7DB_EJ)P(h5_NLIoJ9?TWpXaZLH11%AAZVV(IKMNWlWkNeHQgafwJ}6RZOm{t%Y6;G Fe*tnukqiI; diff --git a/sorts/target/classes/za/co/oldtimerza/sorts/QuickSort.class b/sorts/target/classes/za/co/oldtimerza/sorts/QuickSort.class deleted file mode 100644 index 2a3f1d01db94eda450436a9ecaa3f6058382a53c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1656 zcmah|OK%fb6#lL~kHi_A1eict8$vL|u>td{TjIb53CWTbR186ty2!*HoC}kgXgubT zJyQMvQn$2=Zn}UCC@iY3`6K)b;JY5jF@vSf;@)%4{mwbxdCbSpAN~b!1vfLupfrUt zE@Uu?i|V+f)QXAA85p>tl&dDLnYb=stV&--w*=C~<#hq=cF=YOrW?|C*LvHVZg}6> z^k_NS2wIM}?u1h51EUsg$*#a+W7ny)f=b}EBf0H{)Ve_!bt}L2Wa~+jVvUiNiP&P} zvGdfa^djk18nPSJmXihnOJP+W1rV6|9x?YVofkU?l+GovtFi7mey39RBe&y*wOgb! z*_0jMiFzSxYa}_1cS;f+j}n+t?3=yKn0z4_yjHI#Bax53BcBGWRn$2OFL=g=ZOP7- zz*^FOeA@4Wj>oa`9Vd)rBm-Z-P6k)x$UuwS?Hz$*W11&$#B(1-&6eZW{kHpDARChC zsG*dMI-W|LD$@*lVavTE)s|(48*@o*iG?XxCVsL|#m^Rgz>gNrV9~-axFImxU!>8= zT3AuI8de1s{%b4JF_+G)KF(7zM*68@ P9QJdG(=Red3d>&s)Z$ta diff --git a/sorts/target/classes/za/co/oldtimerza/sorts/SelectSort.class b/sorts/target/classes/za/co/oldtimerza/sorts/SelectSort.class deleted file mode 100644 index 466c17b33efd77b9f9777dc5075a6de4bf47aedb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1188 zcmah{TTc@~7(LT%SypY4=GV#h9{}#*u>k|K28M8B7<0I(ws{>{ z0}14mV=L>Hj@vr!2n?*qKt_21Et}gEh(D`sdjhGV47~Nm&XyOxbhms)#)`GF>uoT=5I%G#|!DzYhhG(N}lhPqY~|9UaevRGudL*-E*BrBz>nS z>(O$qKOkT#ta?ZR1V;WvO!e~lu-oA@*N0tc`Mw)eoI((J6)#-Qlg>~{RsuI_glw+Z z&*}W4exm221dRG=-_&(S1_GkMaJdnNZ}(ik!6!wPDK`vhNv2A*Mp*V%rII>zCfkCN z%ET~C6IU>IyiYEp*MGjXSqgZ;G?=PGG9{^3LEe z&3|q1p930%(uMm4dJa#)Ghu&&_(CIwB=>=4P)CZkf)aocjPe}97{-ZG#ZOO*j}ZIJ zfYw!P^b}8ElKCmF&UF*GNbeF?4427`V`^V}f;gW8LTx2&A43y3L?xZK)5nO%@Dquz z7+8v@pIDt_*0#D*cBacYM8e7+#KfmRzwLB8a|~U>D?2k8Kf++kIS@pAw9k52phjS; zCRrshfeg9l$as~E*J!UJjW@7RC1w{_o4qcQbrP?cv8Y4_&$%r2at$wtu-F}YqNkLI WvFbWwoEW{9CMwsh34dV|IrA5n2K^@h diff --git a/sorts/target/test-classes/za/co/oldtimerza/sorts/BubbleSortTests.class b/sorts/target/test-classes/za/co/oldtimerza/sorts/BubbleSortTests.class deleted file mode 100644 index 083e51f4920a3865036d69e48c1c89fddd56cec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmah}YflqF6g|^!yX|&`Fy5Kj(n?53lf8Fl?>*<-GdunH_v;S;5Ani40TVhV4WuxUhk^S#rVL~- zZD0l^u{~>`j5!_iIu;m=YFw>)eA^EqhRMpQW7mA!_v(>*!~fZ?LznPYn@vA*BG+#c98m=ab|WTT_8Q;!15SXguVbG5qFXo&3U;~UVaP?F>B!{uhuHCmekOsD z1|_6d$k@d=-Jk;9EJpW+jHN71Ih_SPEn3+W8O2Qb4D1snDfH1ZD>n`FQ*NpP3}BE} z3^%DcC7WMLFsdkjLu&5~=`YYa7~-meY711`!7&q@V!|>cF^AijtO|{Oz#q%}j?7+K zKSy?ZPs_@X$;gnk@-pgHLB^bA%4lV+0hQ>Qin+9kd22x>hBc&;g4HXMbLf@wXK3%{ z&XIeYaH=LvVYE4w0$u6JB?^d9NwD;`hMWT4v+`{*U7S({ac(TkpCd24N=v_s^als> zw}B!e4C5C@@EfDjx3cmh@vVVVdN)ev5TS)zl%=RTi`$f?afeXuQB+l97gb{yRb%wF O?fqShauef%Ho`$wYy diff --git a/sorts/target/test-classes/za/co/oldtimerza/sorts/InsertionSortTests.class b/sorts/target/test-classes/za/co/oldtimerza/sorts/InsertionSortTests.class deleted file mode 100644 index 6701c37fb60367679bdceb46923a470dec229836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1426 zcma)6>rN9v6#k~&cH8YL3uw8hD9ELh%X-%cAwi=FNrePR4e{3&2H0lVt$QKDTbXDe z8hrpC!aw>P#xpZpS_nT#lRal<&iT%FzBAKb|GxbM@DMKylrW~_zJUzJiZC#)W5PfV zlLn?x5!=%Ss+iF+t7DGAaQ%pf@kS8F43o8E$KDR?z}t!410K>UqJzj@kwI?Yi?{`b z{G#i-@e)I}GF@lTUI#mzp{M5hd^I^}@Nm;5??wzWS1Pv2 zqd209xroO}i(zOz@ddZK8@U9z?E69N#Kepcsam*aHxr^}zv8<=$SJWe+7A+MM-X4} zW4^~jiZn%Af>O(@9wiM(IJ7=%F!sMx-ryS@LNj^tEVZlVxOc)f2GK~ev|_kP$r+jaQi4%L^*b_KC&+$<*1-@j7Zh8f*ba`F;*`@W0}^wvjma9&=m-3@ z%pb^YW%X0!H@39AG`XBKd8;U`Zk41hSf;dA-s)G5t|?o{DqFPXlw()}$|+er!a0Rr ztA2s@e&!T~cWF(Pq$!McO~pW0dZ(P2cXDL1^@s6 diff --git a/sorts/target/test-classes/za/co/oldtimerza/sorts/MergeSortTests.class b/sorts/target/test-classes/za/co/oldtimerza/sorts/MergeSortTests.class deleted file mode 100644 index 3b91b15d352a78e15b18ea0305478569f10a4adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1404 zcmah}>rN9v6#k~&cH8YL3n(`g0j-pBS??MlBxp1tDUbkZ()ep>hqBGmt$QKjTbZa3 zjXr?y;2(Vtld!Ip6utH#7bD_v;S;5AfVT0W&)87)W6z4+D2~6b)o> z&%i87VtLL$8S^?8bSyID4|&k!JAM!`%v3%&cHOsquMxSlPEkl3p}o<~S!T$txNSFD zWk{FistnpIzrh&>DsG!^#)o@6*md?iS{bVNb;qkZfh*!z zOjC>_=v3U0=Cvv<=g6_+$n|WoLS=@?;0?8ZmA~)sI)&Rjj6EtC`G2P4PIs>2IiwX8 zdrrG)C+(M43Et|XDn=9?cl`a7Fg zg017eNf+dyiAQ*>R+>yknyi(VR<{b$<}6cMD{BoaN7t0irIpQFi^?&qQRNh@0pXlNuarMQoBx8` zM$%H%XbPg+QW4MOak|U9=g=5;ApkoNp!42|Kl%2&*^3u3PC{tur*5p~%6^mzKL!p(5C8xG diff --git a/sorts/target/test-classes/za/co/oldtimerza/sorts/QuickSortTests.class b/sorts/target/test-classes/za/co/oldtimerza/sorts/QuickSortTests.class deleted file mode 100644 index 25894ae5878731a9e8bbfb94a37b282bd8af9141..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 zcmah}>rN9v6#k~&cH8YL3uw8h2xz60%X-%cAwi=FNreccN#n1j9boIyg}o5*txQyi zMjya;@Q=QS@yyJYRzgCW>^U=Y&Ue1^otggp`}GHadw6P~fJq&<45Tobhk@HVN(M5x zV_*tpu{~{|f*BpNI_4Pi2eI3Dx8Vm7!({b?V>f);_nMKr#{*i0bP(EaIx!0j*+sYQ zMoSFo@^p94eYRfrv>^O2gTkKG(AtHEFonPkf_j!Ys>pYA-N+|x{*U^5b zx6&D;MYZ;v_KuxUSXd%>tB0;=Q&imWy$$b+K@KDDi6OZwPp>z?dE(O4GfTPssIe) z3auEfQgTWrKa*e-QTc{c{TS)b(7G7np@L!y6x+oy6P#jFWk_NUcQBa)jefu%%lwW^ zJ*}T0yHVG&(quByWUaikx>b-iXPMGkS!+-^x~6O{t!&p3*T_pzbQagiOXCKijFVMSW2aGLr%_{c Q+L8VyMbm?%ZweFt0BkQt?f?J) diff --git a/sorts/target/test-classes/za/co/oldtimerza/sorts/SelectSortTests.class b/sorts/target/test-classes/za/co/oldtimerza/sorts/SelectSortTests.class deleted file mode 100644 index 42a2df3619a2fb9f5556a5187a74371395da36aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1411 zcmah}YflqF6g|^!ciZhM%R^o&3J8?)Sl=2UBxp1tsgO`o)A(tj18lQ&aUVqZS0);W zMt^`m!Y}$ejCW?Xv=S21Wbd8Xd(S!d%uav){rUsI13WiT#DsxK6B$etVB(&EDHAzN zo0vgKY|ok~W6r?5fdvLL;y&Mrt3enuOjb@@XD4t1zY%)}Jfu}bFCwRUUbMuZFMBO7 zUSY_VW@`-EtDwOddMaLvuO|oFJlt}(ecI`(1Us%@b3;$8(@ibj_acVU)l6GFiX)=S zMLbRp8AdjfmQYpmB9HJ^Tdg2=V=rhC98raPPBS50&P%=Q_g{OGNFnuMgR6^Q2up8S=@`b@Ta{YvF?2ko Date: Sun, 12 May 2019 22:49:32 -0400 Subject: [PATCH 12/21] -Added Node Tests Signed-off-by: Gavin Morris --- .idea/workspace.xml | 315 ++++++++++-------- .../co/oldtimerza/data/DoublyLinkedList.java | 8 + .../java/za/co/oldtimerza/data/NodeTest.java | 33 ++ 3 files changed, 211 insertions(+), 145 deletions(-) create mode 100644 data-structures/src/test/java/za/co/oldtimerza/data/NodeTest.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7a2a879..a84e505 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,27 +1,10 @@ - - - - - - - + + - - - - - - - - - - - - - + @@ -47,49 +30,68 @@ - + - - + + - + + - - - - - - + + + + + + + + + + + + - + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + @@ -144,6 +146,8 @@ @@ -160,9 +164,10 @@ - + - + @@ -316,7 +356,7 @@ - + @@ -364,16 +404,16 @@ - - + + - - @@ -502,13 +542,17 @@ - - - @@ -536,6 +580,9 @@ + + + @@ -547,20 +594,19 @@ - + - + - - + @@ -569,6 +615,7 @@ + @@ -594,7 +641,8 @@ - @@ -667,13 +715,6 @@ - - - - - - - @@ -692,18 +733,6 @@ - - - - - - - - - - - - @@ -781,16 +810,7 @@ - - - - - - - - - - + @@ -820,16 +840,7 @@ - - - - - - - - - - + @@ -851,38 +862,25 @@ - + + - - + + - + - - + + - + - - - - - - - - - - - - - - - - + + @@ -893,27 +891,54 @@ - + - - + + + + + + + + - + - - + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java b/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java index 72a5873..b58bffe 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/DoublyLinkedList.java @@ -8,6 +8,10 @@ public DoublyLinkedList(){ } + public Node getHead(){ + return this.head; + } + public void setHead(Node node){ if(this.head == null){ this.head = node; @@ -19,6 +23,10 @@ public void setHead(Node node){ } } + public Node getTail(){ + return this.tail; + } + public void setTail(Node node){ if(this.tail == null){ this.head = node; diff --git a/data-structures/src/test/java/za/co/oldtimerza/data/NodeTest.java b/data-structures/src/test/java/za/co/oldtimerza/data/NodeTest.java new file mode 100644 index 0000000..43d1b25 --- /dev/null +++ b/data-structures/src/test/java/za/co/oldtimerza/data/NodeTest.java @@ -0,0 +1,33 @@ +package za.co.oldtimerza.data; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class NodeTest{ + + private Node node1; + private Node node2; + + + @Before + public void setup(){ + node1 = new Node(); + node2 = new Node(); + } + + + @Test + public void shouldSetNodeData(){ + node2.setData("test"); + Assert.assertEquals(node2.getData(),"test"); + } + + @Test + public void shouldSetNodeNext(){ + node1.setNext(node2); + node2.setData("test"); + Assert.assertEquals(node1.getNext().getData(), "test"); + } + +} \ No newline at end of file From a355bd91e47aa8269cb496b18fee8cb6a3ae48c0 Mon Sep 17 00:00:00 2001 From: MorrisSoftware <448909@students.wits.ac.za> Date: Mon, 13 May 2019 14:48:06 -0400 Subject: [PATCH 13/21] --Added Queue DS Signed-off-by: MorrisSoftware <448909@students.wits.ac.za> --- .idea/compiler.xml | 1 + .idea/workspace.xml | 267 +++++++----------- .../co/oldtimerza/data/DoublyLinkedList.java | 5 + .../main/java/za/co/oldtimerza/data/Node.java | 2 +- .../za/co/oldtimerza/data/NodeInterface.java | 10 +- .../java/za/co/oldtimerza/data/Queue.java | 27 ++ 6 files changed, 146 insertions(+), 166 deletions(-) create mode 100644 data-structures/src/main/java/za/co/oldtimerza/data/Queue.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index aba4b74..f1a5f65 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,6 +7,7 @@ + diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 7a2a879..6beec4d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,26 +2,12 @@ - - - - + - - - - - - - - - - - - - - + + + @@ -47,49 +33,71 @@ - + - - + + - + - - - - - - + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -140,10 +148,11 @@ @@ -163,7 +172,7 @@ @@ -216,68 +225,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + @@ -491,17 +500,16 @@ + - - - + @@ -609,19 +617,17 @@ - - - - - - - - - @@ -643,6 +649,15 @@ + + + + + + + + + @@ -657,7 +672,7 @@ - + @@ -703,7 +718,8 @@ - @@ -982,6 +998,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -989,32 +1025,17 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -1026,51 +1047,80 @@ - + - - + + - + - - - - - + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + + + - + - - + + - - - - + + + + + + + diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java b/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java new file mode 100644 index 0000000..4d312e6 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java @@ -0,0 +1,35 @@ +package za.co.oldtimerza.data; + +public class BinaryTree implements List +{ + + @Override + public void add(Linkable node) { + + } + + @Override + public void add(int index, Linkable node) { + + } + + @Override + public void remove(int node) { + + } + + @Override + public Linkable getFirst() { + return null; + } + + @Override + public Linkable getLast() { + return null; + } + + @Override + public Linkable get(int index) { + return null; + } +} diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/CanHoldData.java b/data-structures/src/main/java/za/co/oldtimerza/data/CanHoldData.java new file mode 100644 index 0000000..5525211 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/CanHoldData.java @@ -0,0 +1,6 @@ +package za.co.oldtimerza.data; + +public interface CanHoldData { + void setData(T t); + T getData(); +} diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Linkable.java b/data-structures/src/main/java/za/co/oldtimerza/data/Linkable.java new file mode 100644 index 0000000..013e800 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Linkable.java @@ -0,0 +1,8 @@ +package za.co.oldtimerza.data; + +public interface Linkable extends CanHoldData{ + Linkable getNext(); + Linkable getPrev(); + void setNext(Linkable node); + void setPrev(Linkable node); +} diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/LinkableContainer.java b/data-structures/src/main/java/za/co/oldtimerza/data/LinkableContainer.java deleted file mode 100644 index 0f92c93..0000000 --- a/data-structures/src/main/java/za/co/oldtimerza/data/LinkableContainer.java +++ /dev/null @@ -1,10 +0,0 @@ -package za.co.oldtimerza.data; - -public interface LinkableContainer { - T getData(); - LinkableContainer getNext(); - LinkableContainer getPrev(); - void setData(T data); - void setNext(LinkableContainer node); - void setPrev(LinkableContainer node); -} diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java b/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java index d801d1d..af067f2 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java @@ -1,43 +1,48 @@ package za.co.oldtimerza.data; -public class LinkedList { - private LinkableContainer head = null; - private LinkableContainer tail = null; +public class LinkedList{ + private Linkable head = null; + private Linkable tail = null; - public LinkedList(){ + public LinkedList() + { } - public void setHead(LinkableContainer node){ + public void setHead(T t) + { + Linkable node = new Node(t); if(this.head == null){ this.head = node; - } + this.tail = node; + } else{ - LinkableContainer temp = this.head; + Linkable temp = this.head; + temp.setPrev(node); this.head = node; this.head.setNext(temp); } } - public void setTail(LinkableContainer node){ - if(this.tail == null){ - this.head = node; - } - else{ - this.tail.setNext(node); - this.tail = node; - } + public void setTail(T t) + { + Linkable node = new Node(t); + this.tail.setNext(node); + node.setPrev(this.tail); + node.setNext(null); + this.tail = node; } - public LinkableContainer getFirst() + public Linkable getFirst() { return this.head; } - public LinkableContainer getLast(){ + public Linkable getLast() + { if(this.tail == null){ - LinkableContainer n = this.head; + Linkable n = this.head; while(n.getNext() != null){ n = n.getNext(); } @@ -49,9 +54,10 @@ public LinkableContainer getLast(){ } } - public LinkableContainer get(int index) { + public Linkable get(int index) + { int count = 0; - LinkableContainer n = this.head; + Linkable n = this.head; while(n.getNext() != null){ if(count == index){ return n; @@ -64,36 +70,56 @@ public LinkableContainer get(int index) { return null; } - public void add(LinkableContainer newnode){ + public Linkable get(T t) + { + Linkable n = this.head; + while(n.getNext() != null){ + if(n.getData() == t){ + return n; + } + else{ + n = n.getNext(); + } + } + return null; + } + + public void add(T t) + { + Linkable newNode = new Node(t); if(this.head == null){ - this.head = newnode; - this.tail = newnode; + this.head = newNode; + this.tail = newNode; } else{ - newnode.setPrev(this.getLast()); - newnode.setNext(null); - this.getLast().setNext(newnode); - this.tail = newnode; + newNode.setPrev(this.getLast()); + newNode.setNext(null); + this.getLast().setNext(newNode); + this.tail = newNode; } } - public void add(int index, LinkableContainer newnode){ - LinkableContainer n0 = this.get(index); - LinkableContainer n1 = n0.getNext(); + public void add(int index, T t) + { + Linkable newNode = new Node(t); + Linkable n0 = this.get(index); + Linkable n1 = n0.getNext(); - n0.setNext(newnode); - n1.setPrev(newnode); - newnode.setPrev(n0); - newnode.setNext(n1); + n0.setNext(newNode); + n1.setPrev(newNode); + newNode.setPrev(n0); + newNode.setNext(n1); } - public void remove(int index) { + public void remove(int index) + { this.get(index); } - public int length(){ + public int length() + { int count = 0; - LinkableContainer n = this.head; + Linkable n = this.head; while(n != null){ n = n.getNext(); count += 1; diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/List.java b/data-structures/src/main/java/za/co/oldtimerza/data/List.java index 54044f2..7fa0ff0 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/List.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/List.java @@ -1,11 +1,11 @@ package za.co.oldtimerza.data; public interface List{ - void add(LinkableContainer node); - void add(int index, LinkableContainer node); + void add(Linkable node); + void add(int index, Linkable node); void remove(int node); - LinkableContainer getFirst(); - LinkableContainer getLast(); - LinkableContainer get(int index); + Linkable getFirst(); + Linkable getLast(); + Linkable get(int index); } diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Node.java b/data-structures/src/main/java/za/co/oldtimerza/data/Node.java index 61be9b6..0734edf 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/Node.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Node.java @@ -1,9 +1,9 @@ package za.co.oldtimerza.data; -public class Node implements LinkableContainer { +public class Node implements Linkable{ - private LinkableContainer prev = null; - private LinkableContainer next = null; + private Linkable prev = null; + private Linkable next = null; private T data = null; public Node(T t){ @@ -14,19 +14,19 @@ public Node(){ } - public LinkableContainer getPrev() { + public Linkable getPrev() { return prev; } - public void setPrev(LinkableContainer prev) { + public void setPrev(Linkable prev) { this.prev = prev; } - public LinkableContainer getNext() { + public Linkable getNext() { return next; } - public void setNext(LinkableContainer next) { + public void setNext(Linkable next) { this.next = next; } @@ -34,7 +34,7 @@ public T getData() { return data; } - public void setData(T data) { + public void setData(Object t) { this.data = data; } } \ No newline at end of file diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java b/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java index 631c263..2578a6a 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java @@ -2,9 +2,9 @@ public class Queue extends LinkedList { - public LinkableContainer remove() + public Linkable remove() { - LinkableContainer head = this.getFirst(); + Linkable head = this.getFirst(); head.getNext().setPrev(null); this.setHead(head.getNext()); return head; diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java b/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java new file mode 100644 index 0000000..8b35e46 --- /dev/null +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java @@ -0,0 +1,4 @@ +package za.co.oldtimerza.data; + +public class Stack { +} diff --git a/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java b/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java index 5620d2f..8c52ca1 100644 --- a/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java +++ b/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java @@ -7,39 +7,36 @@ public class LinkedListTest{ private LinkedList list; - private LinkableContainer node1; - private LinkableContainer node2; - private LinkableContainer node3; + private Linkable node1; + private Linkable node2; + private Linkable node3; @Before public void setup(){ this.list = new LinkedList(); - this.node1 = new Node("node1"); - this.node2 = new Node("node2"); - this.node3 = new Node("node3"); - this.list.add(node1); - this.list.add(node2); - this.list.add(node3); + this.list.add("node1"); + this.list.add("node2"); + this.list.add("node3"); } @Test public void shouldAddHeadToList() { - Assert.assertEquals(this.list.getFirst(),node1); + Assert.assertEquals(this.list.getFirst().getData(),"node1"); } @Test public void shouldAddNodeToEndOfList() { - Assert.assertEquals(this.list.getLast(),node3); + Assert.assertEquals(this.list.getLast().getData(),"node3"); } @Test public void shoudlAddNodeAtPosition() { - LinkableContainer node4 = new Node(); + Linkable node4 = new Node(); this.list.add(1,node4); - Assert.assertEquals(this.list.get(2).getNext(), node3); + Assert.assertEquals(this.list.get(2).getNext().getData(), "node3"); } @Test @@ -50,7 +47,7 @@ public void shouldGetListLength() @Test public void shouldGetNode(){ - Assert.assertEquals(this.list.get(1),node2); + Assert.assertEquals(this.list.get(1).getData(),"node2"); } } diff --git a/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java b/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java index 46b35a5..7509ce2 100644 --- a/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java +++ b/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java @@ -7,10 +7,10 @@ public class QueueTest { private Queue queue; - private LinkableContainer node1; - private LinkableContainer node2; - private LinkableContainer node3; - private LinkableContainer node4; + private Linkable node1; + private Linkable node2; + private Linkable node3; + private Linkable node4; @Before public void setup(){ @@ -35,7 +35,7 @@ public void shouldGetFrontOfQueue() { this.queue.add(node1); this.queue.add(node2); - LinkableContainer head = this.queue.remove(); + Linkable head = this.queue.remove(); Assert.assertEquals(head,node1); } @@ -45,7 +45,7 @@ public void shouldGetBackOfQueue() this.queue.add(node1); this.queue.add(node2); this.queue.add(node3); - LinkableContainer tail = this.queue.getLast(); + Linkable tail = this.queue.getLast(); Assert.assertEquals(tail,node3); } } From 1763e5b21e4ec7185b40b723e87e3f921ac13a6b Mon Sep 17 00:00:00 2001 From: Gavin Morris Date: Wed, 15 May 2019 22:03:55 -0400 Subject: [PATCH 21/21] --Refactored LinkedList --Added Queue and relevant tests Signed-off-by: Gavin Morris --- .idea/workspace.xml | 349 +++++++++++------- .../za/co/oldtimerza/data/BinaryTree.java | 26 +- .../java/za/co/oldtimerza/data/Dequeue.java | 2 +- .../za/co/oldtimerza/data/LinkedList.java | 216 +++++------ .../main/java/za/co/oldtimerza/data/List.java | 11 +- .../java/za/co/oldtimerza/data/Queue.java | 21 +- .../java/za/co/oldtimerza/data/Stack.java | 56 ++- .../za/co/oldtimerza/data/LinkedListTest.java | 6 +- .../data/{QueueTest.java => Queue1Test.java} | 15 +- 9 files changed, 432 insertions(+), 270 deletions(-) rename data-structures/src/test/java/za/co/oldtimerza/data/{QueueTest.java => Queue1Test.java} (74%) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 5d687a5..777ad61 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,19 +1,16 @@ - - - - - + - + + - + - + @@ -39,19 +36,62 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -60,14 +100,15 @@ - - + + + @@ -103,19 +144,46 @@ - + - - + + + + + + + + + + + + + + - + - - + + + + + + + + + + + + + + + + + @@ -148,8 +216,6 @@ @@ -422,7 +492,7 @@ - - - @@ -658,6 +732,9 @@ + + + @@ -681,7 +758,7 @@ - + @@ -689,7 +766,7 @@ - + @@ -998,62 +1075,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1092,16 +1113,27 @@ + + + + + + + + + + - - + + + @@ -1111,20 +1143,89 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java b/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java index 4d312e6..9241e0c 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/BinaryTree.java @@ -4,18 +4,13 @@ public class BinaryTree implements List { @Override - public void add(Linkable node) { - - } - - @Override - public void add(int index, Linkable node) { + public void remove(int node) { } @Override - public void remove(int node) { - + public int length() { + return 0; } @Override @@ -32,4 +27,19 @@ public Linkable getLast() { public Linkable get(int index) { return null; } + + @Override + public Linkable get(Object o) { + return null; + } + + @Override + public void add(Object o) { + + } + + @Override + public void add(int index, Object o) { + + } } diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Dequeue.java b/data-structures/src/main/java/za/co/oldtimerza/data/Dequeue.java index 3b37dcc..e23b947 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/Dequeue.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Dequeue.java @@ -1,5 +1,5 @@ package za.co.oldtimerza.data; -public class Dequeue extends LinkedList +public interface Dequeue extends Queue { } diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java b/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java index af067f2..d945264 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/LinkedList.java @@ -1,130 +1,130 @@ package za.co.oldtimerza.data; -public class LinkedList{ - private Linkable head = null; - private Linkable tail = null; +public class LinkedList implements List, Queue { - public LinkedList() - { + private Linkable head = null; + private Linkable tail = null; - } + public LinkedList() + { - public void setHead(T t) - { - Linkable node = new Node(t); - if(this.head == null){ - this.head = node; - this.tail = node; - } - else{ - Linkable temp = this.head; - temp.setPrev(node); - this.head = node; - this.head.setNext(temp); - } - } + } - public void setTail(T t) - { - Linkable node = new Node(t); - this.tail.setNext(node); - node.setPrev(this.tail); - node.setNext(null); + public void setHead(T t) + { + Linkable node = new Node(t); + if(this.head == null){ + this.head = node; this.tail = node; } - - public Linkable getFirst() - { - return this.head; - } - - public Linkable getLast() - { - - if(this.tail == null){ - Linkable n = this.head; - while(n.getNext() != null){ - n = n.getNext(); - } - this.tail = n; - return this.tail; - } - else{ - return this.tail; - } + else{ + Linkable temp = this.head; + temp.setPrev(node); + this.head = node; + this.head.setNext(temp); } - - public Linkable get(int index) - { - int count = 0; + } + + public void setTail(T t) + { + Linkable node = new Node(t); + this.tail.setNext(node); + node.setPrev(this.tail); + node.setNext(null); + this.tail = node; + } + + public Linkable getFirst() + { + return this.head; + } + + public Linkable getLast() + { + + if(this.tail == null){ Linkable n = this.head; while(n.getNext() != null){ - if(count == index){ - return n; - } - else{ - count += 1; - n = n.getNext(); - } + n = n.getNext(); } - return null; + this.tail = n; + return this.tail; } - - public Linkable get(T t) - { - Linkable n = this.head; - while(n.getNext() != null){ - if(n.getData() == t){ - return n; - } - else{ - n = n.getNext(); - } + else{ + return this.tail; + } + } + + public Linkable get(int index) + { + int count = 0; + Linkable n = this.head; + while(n.getNext() != null){ + if(count == index){ + return n; + } + else{ + count += 1; + n = n.getNext(); } - return null; } - - public void add(T t) - { - Linkable newNode = new Node(t); - if(this.head == null){ - this.head = newNode; - this.tail = newNode; + return null; + } + + public Linkable get(T t) + { + Linkable n = this.head; + while(n.getNext() != null){ + if(n.getData() == t){ + return n; } else{ - newNode.setPrev(this.getLast()); - newNode.setNext(null); - this.getLast().setNext(newNode); - this.tail = newNode; + n = n.getNext(); } } - - public void add(int index, T t) - { - Linkable newNode = new Node(t); - Linkable n0 = this.get(index); - Linkable n1 = n0.getNext(); - - n0.setNext(newNode); - n1.setPrev(newNode); - newNode.setPrev(n0); - newNode.setNext(n1); + return null; + } + + public void add(T t) + { + Linkable newNode = new Node(t); + if(this.head == null){ + this.head = newNode; + this.tail = newNode; } - - public void remove(int index) - { - this.get(index); + else{ + newNode.setPrev(this.getLast()); + newNode.setNext(null); + this.getLast().setNext(newNode); + this.tail = newNode; } - - public int length() - { - int count = 0; - Linkable n = this.head; - while(n != null){ - n = n.getNext(); - count += 1; - } - return count; + } + + public void add(int index, T t) + { + Linkable newNode = new Node(t); + Linkable n0 = this.get(index); + Linkable n1 = n0.getNext(); + + n0.setNext(newNode); + n1.setPrev(newNode); + newNode.setPrev(n0); + newNode.setNext(n1); + } + + public void remove(int index) + { + this.get(index); + } + + public int length() + { + int count = 0; + Linkable n = this.head; + while(n != null){ + n = n.getNext(); + count += 1; } -} - + return count; + } +} \ No newline at end of file diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/List.java b/data-structures/src/main/java/za/co/oldtimerza/data/List.java index 7fa0ff0..88311dd 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/List.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/List.java @@ -1,11 +1,12 @@ package za.co.oldtimerza.data; -public interface List{ - void add(Linkable node); - void add(int index, Linkable node); - void remove(int node); +public interface List{ Linkable getFirst(); Linkable getLast(); Linkable get(int index); - + Linkable get(T t); + void add(T t); + void add(int index, T t); + void remove(int index); + int length(); } diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java b/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java index 2578a6a..9c242b8 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Queue.java @@ -1,12 +1,15 @@ package za.co.oldtimerza.data; -public class Queue extends LinkedList { +public interface Queue{ + void setHead(T t); + void setTail(T t); + Linkable getFirst(); + Linkable getLast(); + Linkable get(int index); + Linkable get(T t); + void add(T t); + void add(int index, T t); + void remove(int index); + int length(); +} - public Linkable remove() - { - Linkable head = this.getFirst(); - head.getNext().setPrev(null); - this.setHead(head.getNext()); - return head; - } -} \ No newline at end of file diff --git a/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java b/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java index 8b35e46..caeddf1 100644 --- a/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java +++ b/data-structures/src/main/java/za/co/oldtimerza/data/Stack.java @@ -1,4 +1,58 @@ package za.co.oldtimerza.data; -public class Stack { +public class Stack implements Queue { + + public Stack() + { + } + + @Override + public void setHead(T t) { + + } + + @Override + public void setTail(T t) { + + } + + @Override + public Linkable getFirst() { + return null; + } + + @Override + public Linkable getLast() { + return null; + } + + @Override + public Linkable get(int index) { + return null; + } + + @Override + public Linkable get(T t) { + return null; + } + + @Override + public void add(T t) { + + } + + @Override + public void add(int index, T t) { + + } + + @Override + public void remove(int index) { + + } + + @Override + public int length() { + return 0; + } } diff --git a/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java b/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java index 8c52ca1..860d924 100644 --- a/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java +++ b/data-structures/src/test/java/za/co/oldtimerza/data/LinkedListTest.java @@ -6,14 +6,14 @@ public class LinkedListTest{ - private LinkedList list; + private LinkedList list; private Linkable node1; private Linkable node2; private Linkable node3; @Before public void setup(){ - this.list = new LinkedList(); + this.list = new LinkedList(); this.list.add("node1"); this.list.add("node2"); this.list.add("node3"); @@ -35,7 +35,7 @@ public void shouldAddNodeToEndOfList() public void shoudlAddNodeAtPosition() { Linkable node4 = new Node(); - this.list.add(1,node4); + this.list.add(1,"node4"); Assert.assertEquals(this.list.get(2).getNext().getData(), "node3"); } diff --git a/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java b/data-structures/src/test/java/za/co/oldtimerza/data/Queue1Test.java similarity index 74% rename from data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java rename to data-structures/src/test/java/za/co/oldtimerza/data/Queue1Test.java index 7509ce2..0566fab 100644 --- a/data-structures/src/test/java/za/co/oldtimerza/data/QueueTest.java +++ b/data-structures/src/test/java/za/co/oldtimerza/data/Queue1Test.java @@ -4,9 +4,9 @@ import org.junit.Before; import org.junit.Test; -public class QueueTest { +public class Queue1Test { - private Queue queue; + private LinkedList queue; private Linkable node1; private Linkable node2; private Linkable node3; @@ -14,7 +14,7 @@ public class QueueTest { @Before public void setup(){ - this.queue = new Queue(); + this.queue = new LinkedList(); this.node1 = new Node("node1"); this.node2 = new Node("node2"); @@ -30,14 +30,7 @@ public void shouldAddNodeToQueue() } - @Test - public void shouldGetFrontOfQueue() - { - this.queue.add(node1); - this.queue.add(node2); - Linkable head = this.queue.remove(); - Assert.assertEquals(head,node1); - } + @Test public void shouldGetBackOfQueue()