diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 4be381c..a07d5fa 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -6,11 +6,13 @@
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_beust_jcommander_1_78.xml b/.idea/libraries/Maven__com_beust_jcommander_1_78.xml
new file mode 100644
index 0000000..788fa16
--- /dev/null
+++ b/.idea/libraries/Maven__com_beust_jcommander_1_78.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__junit_junit_4_12.xml b/.idea/libraries/Maven__junit_junit_4_12.xml
new file mode 100644
index 0000000..d411041
--- /dev/null
+++ b/.idea/libraries/Maven__junit_junit_4_12.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_1.xml b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_1.xml
new file mode 100644
index 0000000..f555713
--- /dev/null
+++ b/.idea/libraries/Maven__org_apiguardian_apiguardian_api_1_1_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
new file mode 100644
index 0000000..f58bbc1
--- /dev/null
+++ b/.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml b/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml
new file mode 100644
index 0000000..e2c8297
--- /dev/null
+++ b/.idea/libraries/Maven__org_jetbrains_annotations_13_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml
new file mode 100644
index 0000000..70c9b42
--- /dev/null
+++ b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_1_4_20.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml
new file mode 100644
index 0000000..24afaa1
--- /dev/null
+++ b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_common_1_4_20.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml
new file mode 100644
index 0000000..0af2311
--- /dev/null
+++ b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_4_20.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_20.xml b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_20.xml
new file mode 100644
index 0000000..3d09f6a
--- /dev/null
+++ b/.idea/libraries/Maven__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_4_20.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_0_M1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_0_M1.xml
new file mode 100644
index 0000000..f0982aa
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_5_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_0_M1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_0_M1.xml
new file mode 100644
index 0000000..6ba70f1
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_0_M1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_0_M1.xml
new file mode 100644
index 0000000..467a7b6
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_engine_5_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_0_M1.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_0_M1.xml
new file mode 100644
index 0000000..d33fe56
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_params_5_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_0_M1.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_0_M1.xml
new file mode 100644
index 0000000..1332c3d
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_0_M1.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_0_M1.xml
new file mode 100644
index 0000000..4e2a10f
--- /dev/null
+++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_engine_1_8_0_M1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
new file mode 100644
index 0000000..fbc1b16
--- /dev/null
+++ b/.idea/libraries/Maven__org_opentest4j_opentest4j_1_2_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_testng_testng_7_4_0.xml b/.idea/libraries/Maven__org_testng_testng_7_4_0.xml
new file mode 100644
index 0000000..077b7c7
--- /dev/null
+++ b/.idea/libraries/Maven__org_testng_testng_7_4_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_webjars_jquery_3_5_1.xml b/.idea/libraries/Maven__org_webjars_jquery_3_5_1.xml
new file mode 100644
index 0000000..b1ee78f
--- /dev/null
+++ b/.idea/libraries/Maven__org_webjars_jquery_3_5_1.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index ad4fefc..8b9083f 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,6 +3,7 @@
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index b6d36bd..8cac2b9 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,86 +1,19 @@
+
+
+
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java
index 2fb3165..6e5a5c7 100644
--- a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java
+++ b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java
@@ -1,7 +1,189 @@
package com.zipcodewilmington.singlylinkedlist;
+
+import sun.lwawt.macosx.CSystemTray;
+
/**
* Created by leon on 1/10/18.
*/
public class SinglyLinkedList {
+
+ class Node {
+ Object data;
+ Node next;
+
+ public Node(Object data) {
+ this.data = data;
+ this.next = null;
+ }
+
+ }
+
+ public Node head = null;
+ public Node tail = null;
+
+ public void add(Object data) {
+ Node newNode = new Node(data);
+ if (head == null) {
+ head = newNode;
+
+ } else {
+ tail.next = newNode;
+ }
+ tail = newNode;
+ }
+
+ public void remove(Integer index) { // REFACTOR TO RETURN TYPE VOID
+ Node current = this.head;
+ Node previous = null;
+
+ if (index == 0 && current != null) { // [head] -> [current] -> [current.next] -> [tail]
+ this.head = current.next;
+ }
+ int counter = 0;
+ while(current != null) {
+ if(counter == index) {
+ previous.next = current.next;
+ break;
+ } else {
+ previous = current;
+ current = current.next;
+ counter++;
+ }
+ }
+ if(current == null) {
+ System.out.println("not found");
+ }
+// Node current = head;
+// Node nextPoint = head.next;
+// int tracker = 0;
+// if(index.equals(tracker)) {
+// head = current.next;
+// return;
+// }
+// tracker++;
+// while(true) {
+// tracker++;
+// current = nextPoint;
+// nextPoint = current.next;
+// if(index.equals(tracker)) {
+// current.next = nextPoint.next;
+// if(nextPoint.next == null) {
+// current.next = null;
+// tail = current;
+// }
+// }
+// }
+
+ }
+
+ public Boolean contains(Object data) {
+ Node current = head;
+ while (current != null) {
+ if (current.data == data){
+ return true;
+ }
+ current = current.next;
+ }
+ return false;
+ }
+
+ public Object find(Object data) {
+ Node current = head;
+ int index = 0;
+ while (current != null) {
+ if (current.data == data) {
+ return index;
+ }
+ index++;
+ current = current.next;
+ }
+ return -1;
+ }
+
+ public Integer size() {
+ Integer counter = 0;
+ Node current = head;
+ while (current != null) {
+ counter++;
+ current = current.next;
+ }
+ return counter;
+ }
+
+ public Object get(Integer index) {
+ Node current = head;
+ int counter = 0;
+ while(current != null) {
+ if (counter == index) {
+ return current.data;
+ }
+ counter++;
+ current = current.next;
+ }
+ return -1;
+ }
+
+ public SinglyLinkedList copy() {
+ SinglyLinkedList newList = new SinglyLinkedList();
+ Node current = head;
+ while(current != null) {
+ newList.add(current.data);
+ current = current.next;
+ }
+ return newList;
+ }
+
+
+ public void sort() {
+ Node current = head;
+ for(int i = 0; i < size(); i++) {
+ while(current.next != null) {
+ Node next = current.next;
+ if((Integer) current.data > (Integer) next.data) {
+ Object temp = current.data;
+ current.data = next.data;
+ next.data = temp;
+ }
+ current = current.next;
+ }
+ }
+ }
+
}
+
+
+//>{
+
+
+// class Node {
+// SomeType data;
+// Node next;
+//
+// public Node(SomeType data) {
+// this.data = data;
+// this.next = null;
+// }
+// }
+//
+// public Node head = null;
+// public Node tail = null;
+//
+// public void add(SomeType data) {
+// Node newNode = new Node(data);
+// if(head == null) {
+// head = newNode;
+//
+// } else {
+// tail.next = newNode;
+// }
+// tail = newNode;
+// }
+//
+// public void remove(SomeType data) {
+// Node newNode = new Node(data);
+//
+// }
+
+
+
diff --git a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java
index 5cc057e..24b2c4e 100644
--- a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java
+++ b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java
@@ -1,7 +1,133 @@
package com.zipcodewilmington.singlylinkedlist;
+import org.junit.Assert;
+import org.junit.Test;
+
+
/**
* Created by leon on 1/10/18.
*/
public class SinglyLinkedListTest {
+
+ @Test
+ public void testAdd() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ Integer expected = 2;
+ // When
+ Integer actual = singlyLinkedList.size();
+
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testRemove() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ // When
+ singlyLinkedList.remove(1);
+ Integer expectedSize = 1;
+ Integer actualSize = singlyLinkedList.size();
+ // Then
+ Assert.assertEquals(expectedSize,actualSize);
+ }
+
+ @Test
+ public void testContains() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add("one");
+ singlyLinkedList.add("two");
+ Boolean expected = true;
+ // When
+ Boolean actual = singlyLinkedList.contains("one");
+ // Then
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testFind() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ singlyLinkedList.add(3);
+ Integer expectedIndex = 2;
+ // When
+ Object actualIndex = singlyLinkedList.find(3);
+ // Then
+ Assert.assertEquals(expectedIndex,actualIndex);
+ }
+
+ @Test
+ public void testSize() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ // When
+ Integer expectedSize = 2;
+ Integer actualSize = singlyLinkedList.size();
+ // Then
+ Assert.assertEquals(expectedSize,actualSize);
+ }
+
+ @Test
+ public void testGet() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ singlyLinkedList.add(3);
+
+ // When
+ Integer expectedElement = 2;
+ Integer actualElement = (Integer) singlyLinkedList.get(1);
+
+ // Then
+ Assert.assertEquals(expectedElement, actualElement);
+
+ }
+
+ @Test
+ public void testCopy() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(2);
+ singlyLinkedList.add(3);
+
+ // When
+ SinglyLinkedList newList = singlyLinkedList.copy();
+ int singleSize = singlyLinkedList.size();
+ int newListSize = newList.size();
+
+ // Then
+ Assert.assertEquals(singleSize, newListSize);
+ }
+
+ @Test
+ public void testSort() {
+ // Given
+ SinglyLinkedList singlyLinkedList = new SinglyLinkedList();
+ singlyLinkedList.add(2);
+ singlyLinkedList.add(1);
+ singlyLinkedList.add(3);
+ singlyLinkedList.add(5);
+ singlyLinkedList.add(4);
+ singlyLinkedList.add(6);
+
+ // When
+ singlyLinkedList.sort();
+
+ // Then
+ Assert.assertTrue(singlyLinkedList.find(1).equals(0));
+ Assert.assertTrue(singlyLinkedList.find(2).equals(1));
+ Assert.assertTrue(singlyLinkedList.find(3).equals(2));
+ }
}