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