diff --git a/src/MyLL.Java b/src/MyLL.Java new file mode 100644 index 0000000..2d54cbb --- /dev/null +++ b/src/MyLL.Java @@ -0,0 +1,98 @@ +public class MyLL { + private class Node { + public T value; + public Node next; + public Node last; + + public Node(T x, Node y, Node z) { + this.value = x; + this.next = y; + this.last = z; + } + } + private Node head; + private Node tail; + + public MyLL() { + head = null; + tail = null; + } + public void printlist() { + Node current = head; + while (current.next!=null) { + System.out.println(current.value); + current = current.next; + } + System.out.println(current.value); + + } + public void printlistbackwards() { + Node current = tail; + while (current.last!= null) { + System.out.println(current.value); + current = current.last; + } + System.out.println(current.value); + } + + public boolean contains(T ToFind) { + Node current = head; + + while (current.next!=null) { + if (current.value==ToFind) { + return true; + } + current = current.next; + } + if (current.value==ToFind) { + return true; + } + else { + return false; + } + } + + public T remove(T target) { + if (head == null) { + return null; + } + if (head.value == target) { + head = head.next; + head.last = null; + return target; + } + Node current = head; + + while (current.next!=null) { + if (current.next.value == target) { + current.next = current.next.next; + if (current.next !=null) { + current = current.next; + current.last = current.last.last; + } + else { + tail = current; + } + return target; + } + else { + current = current.next; + } + } + return null; + } + + public void addToBack (T toAdd) { + if (head == null) { + head = new Node(toAdd, null, null); + tail = head; + return; + } + Node current = head; + while (current.next!=null) { + current = current.next; + } + current.next = new Node (toAdd, null, current); + tail = current.next; + } +} \ No newline at end of file diff --git a/src/Node.java b/src/Node.java index 3753887..896e2af 100644 --- a/src/Node.java +++ b/src/Node.java @@ -1,3 +1,9 @@ public class Node { - + public char value; + public Node next; + + public Node(char x, Node y) { + this.value = x; + this.next = y; + } } \ No newline at end of file diff --git a/src/Practice.java b/src/Practice.java index 4c0b036..a801fd3 100644 --- a/src/Practice.java +++ b/src/Practice.java @@ -1,5 +1,12 @@ public class Practice { public static void main(String[] args) { - System.out.println("~linked lists practice~"); + MyLL list = new MyLL(); + list.addToBack('z'); + list.addToBack('a'); + list.addToBack('b'); + list.addToBack('g'); + list.remove('a'); + list.printlist(); + } -} +} \ No newline at end of file