Advertisement
Kostiggig

LinkedList imps

Jan 8th, 2023
737
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.07 KB | None | 0 0
  1. package linked_list_implementation;
  2.  
  3. public class LinkedList<T> {
  4.  
  5.     private Node<T> head = null;
  6.  
  7.     void add(T element) {
  8.         Node<T> node  = new Node<>(element);
  9.         if(head == null) {
  10.             head = node;
  11.         }
  12.         else {
  13.             Node<T> curr = head;
  14.             while(curr.next != null) {
  15.                 curr = curr.next;
  16.             }
  17.             curr.next = node;
  18.         }
  19.     }
  20.  
  21.     void addFirst(T element) {
  22.         Node<T> node  = new Node<>(element);
  23.         if(head == null) head = node;
  24.         else{
  25.             Node<T> curr  = head;
  26.             Node<T> res = node;
  27.             while(curr != null) {
  28.                 node.next = curr;
  29.                 curr = curr.next;
  30.                 node = node.next;
  31.             }
  32.             head = res;
  33.         }
  34.     }
  35.  
  36.     T poll() {
  37.         if(head == null) return null;
  38.         Node<T> first = head;
  39.         head = head.next;
  40.         return first.val;
  41.     }
  42.  
  43.     boolean remove(T element) {
  44.         if(head == null) return false;
  45.         if (head.next == null && head.val == element) {
  46.             head = null;
  47.             return true;
  48.         }
  49.         Node<T> curr = head;
  50.         Node<T> prev = null;
  51.         while(curr != null && curr.val != element) {
  52.             prev = curr;
  53.             curr = curr.next;
  54.         }
  55.         if (curr == null) return false;
  56.  
  57.         assert prev != null;
  58.         prev.next = curr.next;
  59.  
  60.         return true;
  61.     }
  62.  
  63.     @Override
  64.     public String toString() {
  65.         return "LinkedList{" +
  66.                 "head=" + head +
  67.                 '}';
  68.     }
  69.  
  70.     private static class Node<T> {
  71.         T val;
  72.         Node<T> next;
  73.  
  74.         public Node(T val) {
  75.             this.val = val;
  76.         }
  77.  
  78.         public Node(T val, Node<T> next) {
  79.             this.val = val;
  80.             this.next = next;
  81.         }
  82.  
  83.         @Override
  84.         public String toString() {
  85.             return "Node{" +
  86.                     "val=" + val +
  87.                     ", next=" + next +
  88.                     '}';
  89.         }
  90.     }
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement