From b8d420a4eff50a8b399be125f895779cf1f61e07 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sun, 25 Jul 2021 15:47:33 -0400 Subject: [PATCH 1/3] methods in progress. working on fixing the find method --- .idea/compiler.xml | 2 + .idea/jarRepositories.xml | 20 + .idea/libraries/Maven__junit_junit_4_12.xml | 13 + .../Maven__org_hamcrest_hamcrest_core_1_3.xml | 13 + .idea/modules.xml | 1 + .idea/workspace.xml | 427 +++++++----------- pom.xml | 14 + .../singlylinkedlist/SinglyLinkedList.java | 76 +++- .../SinglyLinkedListTest.java | 75 +++ 9 files changed, 381 insertions(+), 260 deletions(-) create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/libraries/Maven__junit_junit_4_12.xml create mode 100644 .idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml 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__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_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/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..39e043d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,86 +1,25 @@ + + - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -212,60 +152,19 @@ + + - + + + - - - - - - - - - - + - - - - - + @@ -494,12 +387,28 @@ - - \ 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..5e5d666 100644 --- a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java +++ b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java @@ -3,5 +3,79 @@ /** * Created by leon on 1/10/18. */ -public class SinglyLinkedList { +public class SinglyLinkedList { + + + class Node{ + T data; + Node next; + + public Node(T data){ + this.data = data; + this.next = null; + } + } + + public Node head = null; + public Node tail = null; + + public void add(T data) { + Node newNode = new Node(data); + if(head == null) { + head = newNode; + } else { + tail.next = newNode; + } + tail = newNode; + } + + public int size() { + Node temp = head; + int count = 0; + while(temp != null) { + count++; + temp = temp.next; + } + return count; + } + + public Integer find(T data) { + Node temp = head; + for(int i = 0; i < size(); i++) { + if(!temp.equals(data)) { + temp = temp.next; + } else return i; + } + return null; + } + + public boolean contains(T data) { + Node current = head; + while (current != null) { + if(current.data == data) { + return true; + } + current = current.next; + } + return false; + } + + public void remove(Integer index) { + //iterate by index through list + //if the index equals the value we're looking for, assign each value after that to the next + Node current = head; + Node last = head; + for (int i = 0; i < size(); i++) { + if(i != index) { + last = current; + current = current.next; + } else { + if(i == index) { + while(i < size() - 1) { + last.next = current.next; + } + } + } + } + } } diff --git a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java index 5cc057e..4e457b3 100644 --- a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java +++ b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java @@ -1,7 +1,82 @@ package com.zipcodewilmington.singlylinkedlist; +import org.junit.Assert; +import org.junit.Test; + +import java.util.List; + /** * Created by leon on 1/10/18. */ public class SinglyLinkedListTest { + + @Test + public void testAdd() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 3; + //when + list.add(3); + list.add(5); + list.add(7); + Integer actual = list.size(); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testSize() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 3; + //when + list.add(3); + list.add(5); + list.add(7); + Integer actual = list.size(); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testFind() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 1; + //when + list.add("wine"); + list.add("coffee"); + list.add("tea"); + Integer actual = list.find("coffee"); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testContains() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + //when + list.add("wine"); + list.add("coffee"); + list.add("tea"); + //then + Assert.assertTrue(list.contains("tea")); + } + + @Test + public void testRemove() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + //when + list.add(3); + list.add(5); + list.add(7); + list.add(2); + list.remove(2); + //then + Assert.assertTrue(list.contains(5)); + Assert.assertFalse(list.contains(7)); + } + } From d92d972328f7afdf2a83760067990998db464018 Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sun, 25 Jul 2021 21:58:57 -0400 Subject: [PATCH 2/3] sort sucks --- .idea/workspace.xml | 36 +++++------ .../singlylinkedlist/SinglyLinkedList.java | 60 ++++++++++++++++--- .../SinglyLinkedListTest.java | 60 +++++++++++++++++++ 3 files changed, 126 insertions(+), 30 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 39e043d..95478d1 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,13 +5,7 @@ - - - - - - @@ -164,7 +158,7 @@ - + - + @@ -245,14 +239,14 @@ - + @@ -262,14 +256,14 @@ - + @@ -279,14 +273,14 @@ - + @@ -296,7 +290,7 @@ - - - + - + + + @@ -404,8 +398,8 @@ file://$PROJECT_DIR$/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java - 43 - diff --git a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java index 5e5d666..25da7cc 100644 --- a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java +++ b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java @@ -3,7 +3,7 @@ /** * Created by leon on 1/10/18. */ -public class SinglyLinkedList { +public class SinglyLinkedList> { class Node{ @@ -42,11 +42,11 @@ public int size() { public Integer find(T data) { Node temp = head; for(int i = 0; i < size(); i++) { - if(!temp.equals(data)) { + if(!temp.data.equals(data)) { temp = temp.next; } else return i; } - return null; + return -1; } public boolean contains(T data) { @@ -61,8 +61,6 @@ public boolean contains(T data) { } public void remove(Integer index) { - //iterate by index through list - //if the index equals the value we're looking for, assign each value after that to the next Node current = head; Node last = head; for (int i = 0; i < size(); i++) { @@ -70,12 +68,56 @@ public void remove(Integer index) { last = current; current = current.next; } else { - if(i == index) { - while(i < size() - 1) { - last.next = current.next; - } + while(i < size() - 1) { + last.next = current.next; } } } } + + public T get(Integer index) { + Node temp = head; + for(int i = 0; i < size(); i++) { + if(i == index) { + return temp.data; + } else temp = temp.next; + } + return null; + } + + public SinglyLinkedList copy() { + SinglyLinkedList newList = new SinglyLinkedList(); + Node temp = head; + while(temp != null) { + newList.add(temp.data); + temp = temp.next; + } + return newList; + } + + public void sort() { + Node current = head; + + for(int i = 0; i < size(); i++) { + current = head; + while(current.next != null) { + if(current.data.compareTo(current.next.data) > 0) { + T temp = current.next.data; + current.next.data = current.data; + current.data = temp; + } + current = current.next; + } + } + } + + public void display() { + Node current = head; + //checkListEmpty("There's no list, idiot."); + System.out.println("Nodes of singly linked list:"); + while (current != null) { + System.out.println(current.data + ""); + current = current.next; + } + } } diff --git a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java index 4e457b3..dd86f4d 100644 --- a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java +++ b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java @@ -3,6 +3,7 @@ import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; import java.util.List; /** @@ -68,15 +69,74 @@ public void testContains() { public void testRemove() { //given SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 3; //when list.add(3); list.add(5); list.add(7); list.add(2); list.remove(2); + Integer actual = list.size(); //then Assert.assertTrue(list.contains(5)); Assert.assertFalse(list.contains(7)); + Assert.assertEquals(expected, actual); + } + + @Test + public void testGet() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + String expected = "wine"; + //when + list.add("wine"); + list.add("coffee"); + list.add("tea"); + String actual = list.get(0); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testCopy() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 2; + //when + list.add(3); + list.add(5); + list.add(7); + list.add(2); + SinglyLinkedList newList = list.copy(); + Integer actual = newList.get(3); + //then + Assert.assertEquals(expected, actual); + } + + @Test + public void testSort() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected0 = 1; + Integer expected1 = 5; + Integer expected2 = 8; + Integer expected3 = 13; + //when + list.add(8); + list.add(1); + list.add(13); + list.add(5); + list.sort(); + Integer actual0 = list.get(0); + Integer actual1 = list.get(1); + Integer actual2 = list.get(2); + Integer actual3 = list.get(3); + //then + list.display(); +// Assert.assertEquals(expected0, actual0); +// Assert.assertEquals(expected1, actual1); +// Assert.assertEquals(expected2, actual2); +// Assert.assertEquals(expected3, actual3); } } From 683a6d9c2490b2b159d61c79e4c1b7ee73e28e6c Mon Sep 17 00:00:00 2001 From: jgiroso Date: Sun, 25 Jul 2021 23:16:09 -0400 Subject: [PATCH 3/3] SinglyLinkedList lab complete --- .idea/workspace.xml | 31 ++++------- .../singlylinkedlist/SinglyLinkedList.java | 27 ++++++++++ .../SinglyLinkedListTest.java | 51 +++++++++++++++++-- 3 files changed, 84 insertions(+), 25 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 95478d1..d642e3c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -158,7 +158,7 @@ - + - + @@ -239,14 +239,14 @@ - + @@ -256,14 +256,14 @@ - + @@ -273,7 +273,7 @@ + + + - - - @@ -393,17 +393,6 @@ - - - - - file://$PROJECT_DIR$/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java - 100 - - - - diff --git a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java index 25da7cc..5645037 100644 --- a/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java +++ b/src/main/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedList.java @@ -85,6 +85,7 @@ public T get(Integer index) { return null; } + public SinglyLinkedList copy() { SinglyLinkedList newList = new SinglyLinkedList(); Node temp = head; @@ -111,6 +112,32 @@ public void sort() { } } + public void reverse() { + Node original = head; + Node previous = null; + Node current = null; + + while(original != null) { + current = original; + original = original.next; + + current.next = previous; + previous = current; + head = current; + } + } + + public SinglyLinkedList slice(Integer startIndex, Integer endIndex) { + SinglyLinkedList slicedList = new SinglyLinkedList(); + + for(int i = 0; i <= endIndex; i++) { + if(i >= startIndex) { + slicedList.add(get(i)); + } + } + return slicedList; + } + public void display() { Node current = head; //checkListEmpty("There's no list, idiot."); diff --git a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java index dd86f4d..9c1316f 100644 --- a/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java +++ b/src/test/java/com/zipcodewilmington/singlylinkedlist/SinglyLinkedListTest.java @@ -132,11 +132,54 @@ public void testSort() { Integer actual2 = list.get(2); Integer actual3 = list.get(3); //then + Assert.assertEquals(expected0, actual0); + Assert.assertEquals(expected1, actual1); + Assert.assertEquals(expected2, actual2); + Assert.assertEquals(expected3, actual3); + } + + @Test + public void testReverse() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected0 = 1; + Integer expected1 = 5; + Integer expected2 = 8; + Integer expected3 = 13; + //when + list.add(13); + list.add(8); + list.add(5); + list.add(1); + list.reverse(); + Integer actual0 = list.get(0); + Integer actual1 = list.get(1); + Integer actual2 = list.get(2); + Integer actual3 = list.get(3); + //then list.display(); -// Assert.assertEquals(expected0, actual0); -// Assert.assertEquals(expected1, actual1); -// Assert.assertEquals(expected2, actual2); -// Assert.assertEquals(expected3, actual3); + Assert.assertEquals(expected0, actual0); + Assert.assertEquals(expected1, actual1); + Assert.assertEquals(expected2, actual2); + Assert.assertEquals(expected3, actual3); } + @Test + public void testSlice() { + //given + SinglyLinkedList list = new SinglyLinkedList(); + Integer expected = 4; + //when + list.add(13); + list.add(8); + list.add(5); + list.add(1); + list.add(12); + list.add(9); + SinglyLinkedList slicedList = list.slice(1, 4); + Integer actual = slicedList.size(); + //then + slicedList.display(); + Assert.assertEquals(expected, actual); + } }