diff --git a/.idea/ds_exercises.iml b/.idea/ds_exercises.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/ds_exercises.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/sll/.idea/vcs.xml b/sll/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/sll/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sll/src/main/java/com/tabrizu/ds/App.java b/sll/src/main/java/com/tabrizu/ds/App.java index 67b74fd..110e8de 100644 --- a/sll/src/main/java/com/tabrizu/ds/App.java +++ b/sll/src/main/java/com/tabrizu/ds/App.java @@ -4,16 +4,24 @@ package com.tabrizu.ds; * Hello world! */ public final class App { - private App() { - } - - /** - * Says hello to the world. - * @param args The arguments of the program. - */ public static void main(String[] args) { System.out.println("Hello World!"); + SingleLinkedList list = new SingleLinkedList(); + System.out.println("Step 0: " + list); + list.addLast(55); + list.addLast(76); + list.addLast(35); + list.addFirst(22); + System.out.println("Step 1: " + list); + System.out.println("[Remove]: " + list.removeLast()); + System.out.println("Step 2: " + list); + list.addFirst(78); + list.addLast(88); + System.out.println("Step 3: " + list); + System.out.println("[Remove]: " + list.removeFirst()); + System.out.println("Step 4: " + list); + System.out.println("First: " + list.getFirst()); + System.out.println("Last: " + list.getLast()); - SingleLinkedList myList = new SingleLinkedList(); } } diff --git a/sll/src/main/java/com/tabrizu/ds/SingleLinkedList.java b/sll/src/main/java/com/tabrizu/ds/SingleLinkedList.java index 9c8ebd3..3158644 100644 --- a/sll/src/main/java/com/tabrizu/ds/SingleLinkedList.java +++ b/sll/src/main/java/com/tabrizu/ds/SingleLinkedList.java @@ -1,5 +1,4 @@ package com.tabrizu.ds; - public class SingleLinkedList implements ISingleLinkedList { private class Node { @@ -46,17 +45,21 @@ public class SingleLinkedList implements ISingleLinkedList { m_tail = m_head; } m_size += 1; + System.out.println("First Node added with value: " + value); + } @Override public void addLast(T value) { if (m_size == 0) { addFirst(value); + return; } Node newNode = new Node(value, null); m_tail.setNext(newNode); m_tail = newNode; m_size++; + System.out.println("Last Node added with value: " + value); } @@ -77,30 +80,50 @@ public class SingleLinkedList implements ISingleLinkedList { if (m_size == 0) { return null; } + if (m_size == 1) { + removeFirst(); + } T lastTail = m_tail.getValue(); Node currentNode = m_head; - while (currentNode.getNext() != null){ - + while (currentNode.getNext().getNext() != null){ currentNode = currentNode.getNext(); - } + m_tail = currentNode; + m_tail.setNext(null); + m_size--; + return lastTail; } @Override public T getFirst() { - // TODO Auto-generated method stub - return null; + if (m_size == 0){ + return null; + } + return m_head.getValue(); } @Override public T getLast() { - // TODO Auto-generated method stub - return null; + if (m_size == 0) { + return null; + } + return m_tail.getValue(); } @Override public String toString() { - + if (m_size == 0){ + return "[NULL]"; + } + Node currentNode = m_head; + StringBuilder output = new StringBuilder(); + while (currentNode != null){ + output.append(currentNode.getValue()); + if (currentNode.getNext() != null) + output.append(" => "); + currentNode = currentNode.getNext(); + } + return output.toString(); } } diff --git a/sll/target/classes/com/tabrizu/ds/App.class b/sll/target/classes/com/tabrizu/ds/App.class index ff261ab..f74c1c6 100644 Binary files a/sll/target/classes/com/tabrizu/ds/App.class and b/sll/target/classes/com/tabrizu/ds/App.class differ diff --git a/sll/target/classes/com/tabrizu/ds/ISingleLinkedList.class b/sll/target/classes/com/tabrizu/ds/ISingleLinkedList.class index 657b5ba..ca585dd 100644 Binary files a/sll/target/classes/com/tabrizu/ds/ISingleLinkedList.class and b/sll/target/classes/com/tabrizu/ds/ISingleLinkedList.class differ diff --git a/sll/target/classes/com/tabrizu/ds/SingleLinkedList$Node.class b/sll/target/classes/com/tabrizu/ds/SingleLinkedList$Node.class index 6940ec4..c0f88f6 100644 Binary files a/sll/target/classes/com/tabrizu/ds/SingleLinkedList$Node.class and b/sll/target/classes/com/tabrizu/ds/SingleLinkedList$Node.class differ diff --git a/sll/target/classes/com/tabrizu/ds/SingleLinkedList.class b/sll/target/classes/com/tabrizu/ds/SingleLinkedList.class index fa86609..1e189bf 100644 Binary files a/sll/target/classes/com/tabrizu/ds/SingleLinkedList.class and b/sll/target/classes/com/tabrizu/ds/SingleLinkedList.class differ