From 942b865920fadf4f413522d91ddbf8e7cc596657 Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Fri, 20 Jun 2025 07:30:10 +0000 Subject: [PATCH 1/5] Setting up GitHub Classroom Feedback From 065e6b2ed67ee9425d4580cceacc03f02cab9ffa Mon Sep 17 00:00:00 2001 From: "github-classroom[bot]" <66690702+github-classroom[bot]@users.noreply.github.com> Date: Fri, 20 Jun 2025 07:30:13 +0000 Subject: [PATCH 2/5] add deadline --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c2ac566 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +[![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/a1ZaAUA-) From 47d99dd3b06145b7572e938ef3c5a1ceffecaecb Mon Sep 17 00:00:00 2001 From: ryanknj5 <140574269+ryanknj5@users.noreply.github.com> Date: Fri, 20 Jun 2025 09:53:39 -0700 Subject: [PATCH 3/5] easy peasy lemon squeezy --- app/src/main/java/assignment/App.java | 63 ++++++++++++++++++++--- app/src/test/java/assignment/AppTest.java | 16 ++++++ 2 files changed, 71 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/assignment/App.java b/app/src/main/java/assignment/App.java index 37bfc33..c06ee75 100644 --- a/app/src/main/java/assignment/App.java +++ b/app/src/main/java/assignment/App.java @@ -3,20 +3,67 @@ public class App { public static int get(LinkedList list, int index) { - return 0; - } + LinkedList.Node item = list.head; // O(1) + for (int i = 0; i < index; i++) { // O(n) + item = item.next; // O(1) + } + return item.data; // O(1) + } // Algorithmic Complexity = O(n) - public static void set(LinkedList list, int index, int value) {} + public static void set(LinkedList list, int index, int value) { + LinkedList.Node item = list.head; // O(1) + for (int i = 0; i < index; i++) { // O(n) + item = item.next; // O(1) + } + item.data = value; // O(1) + } // Algorithmic Complexity = O(n) - public static void remove(LinkedList list, int index) {} + public static void remove(LinkedList list, int index) { + + LinkedList.Node item = list.head; // O(1) + if (index == 0) { // O(1) + list.head = list.head.next; // O(1) + } + for (int i = 0; i < index - 1; i++) { // O(n) + item = item.next; // O(1) + } + if (item.next.next == null) { // O(1) + item.next = null; // O(1) + } else { // O(1) + item.next = item.next.next; // O(1) + } + } // Algorithmic Complexity = O(n) public static LinkedList reverse(LinkedList list) { - return list; - } + LinkedList reversedList = new LinkedList(); // O(1) + LinkedList.Node item = list.head; // O(1) + + for (int i = 0; i < list.length(); i++) { // O(n) + reversedList.prepend(item.data); // O(1) + item = item.next; // O(1) + } + return reversedList; // O(1) + } // Algorithmic Complexity = O(n) public static boolean isSortedAscending(LinkedList list) { - return false; - } + LinkedList.Node item = list.head; // O(1) + while (item.next != null) { // O(n) + if (item.data < item.next.data) { // O(1) + item = item.next; // O(1) + } else { // O(1) + return false; // O(1) + } + } + return true; // O(1) + } // Algorithmic Complexity = O(n) + + // Linked List practice + // Write .get + // Write .set + // Write method to delete index + // Reverse linked list + // Is linked list sorted? + // Find algorithmic complexity of each solution private App() {} } diff --git a/app/src/test/java/assignment/AppTest.java b/app/src/test/java/assignment/AppTest.java index c04f47e..56f47bf 100644 --- a/app/src/test/java/assignment/AppTest.java +++ b/app/src/test/java/assignment/AppTest.java @@ -42,6 +42,18 @@ void testRemove() { assertEquals(3, list.head.next.data); } + @Test + void testRemoveIndex0() { + var list = new LinkedList(); + list.append(1); + list.append(2); + list.append(3); + App.remove(list, 0); + + assertEquals(2, list.head.data); + assertEquals(3, list.head.next.data); + } + @Test void testReverse() { var list = new LinkedList(); @@ -50,6 +62,10 @@ void testReverse() { list.append(3); var reversed = App.reverse(list); + System.out.println(reversed.head.data); + System.out.println(reversed.head.next.data); + System.out.println(reversed.head.next.next.data); + assertEquals(3, reversed.head.data); assertEquals(2, reversed.head.next.data); assertEquals(1, reversed.head.next.next.data); From 62d9da889c5b330a74133d9aa7a31ce3e181e136 Mon Sep 17 00:00:00 2001 From: ryanknj5 <140574269+ryanknj5@users.noreply.github.com> Date: Fri, 27 Jun 2025 11:15:08 -0700 Subject: [PATCH 4/5] cover corner case of if index is out of list length and reverse within its own list not make a new one --- app/src/main/java/assignment/App.java | 34 ++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/assignment/App.java b/app/src/main/java/assignment/App.java index c06ee75..2289889 100644 --- a/app/src/main/java/assignment/App.java +++ b/app/src/main/java/assignment/App.java @@ -4,18 +4,26 @@ public class App { public static int get(LinkedList list, int index) { LinkedList.Node item = list.head; // O(1) - for (int i = 0; i < index; i++) { // O(n) + int length = list.length(); + for (int i = 0; i < length; i++) { // O(n) + if(i==index){ + return item.data; + } // This would make it so that if index is in the bounds of length then it will return the data other wise return null right? item = item.next; // O(1) + } return item.data; // O(1) } // Algorithmic Complexity = O(n) public static void set(LinkedList list, int index, int value) { LinkedList.Node item = list.head; // O(1) - for (int i = 0; i < index; i++) { // O(n) + int length = list.length(); + for (int i = 0; i < length; i++) { // O(n) + if(i==index){ + item.data = value; + } item = item.next; // O(1) } - item.data = value; // O(1) } // Algorithmic Complexity = O(n) public static void remove(LinkedList list, int index) { @@ -35,14 +43,24 @@ public static void remove(LinkedList list, int index) { } // Algorithmic Complexity = O(n) public static LinkedList reverse(LinkedList list) { - LinkedList reversedList = new LinkedList(); // O(1) + // LinkedList reversedList = new LinkedList(); // O(1) + // LinkedList.Node item = list.head; // O(1) + // int length = list.length(); + // for (int i = 0; i < length; i++) { // O(n) + // reversedList.prepend(item.data); // O(1) + // item = item.next; // O(1) + // } + // return reversedList; // O(1) LinkedList.Node item = list.head; // O(1) - - for (int i = 0; i < list.length(); i++) { // O(n) - reversedList.prepend(item.data); // O(1) + int length = list.length(); + int counter = 0; + for (int i = 0; i < length; i++) { // O(n) + list.prepend(item.data); // O(1) + counter++; + remove(list, counter); item = item.next; // O(1) } - return reversedList; // O(1) + return list; // O(1) } // Algorithmic Complexity = O(n) public static boolean isSortedAscending(LinkedList list) { From 30260cef1e1416ef957ca77ab2620a6d4ebf31f7 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 27 Jun 2025 18:16:08 +0000 Subject: [PATCH 5/5] [autofix.ci] apply automated fixes --- app/src/main/java/assignment/App.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/assignment/App.java b/app/src/main/java/assignment/App.java index 2289889..4932069 100644 --- a/app/src/main/java/assignment/App.java +++ b/app/src/main/java/assignment/App.java @@ -6,11 +6,11 @@ public static int get(LinkedList list, int index) { LinkedList.Node item = list.head; // O(1) int length = list.length(); for (int i = 0; i < length; i++) { // O(n) - if(i==index){ + if (i == index) { return item.data; - } // This would make it so that if index is in the bounds of length then it will return the data other wise return null right? + } // This would make it so that if index is in the bounds of length then it will return the + // data other wise return null right? item = item.next; // O(1) - } return item.data; // O(1) } // Algorithmic Complexity = O(n) @@ -19,7 +19,7 @@ public static void set(LinkedList list, int index, int value) { LinkedList.Node item = list.head; // O(1) int length = list.length(); for (int i = 0; i < length; i++) { // O(n) - if(i==index){ + if (i == index) { item.data = value; } item = item.next; // O(1)