Advertisement
Yesver08

LinkedList.java

Feb 27th, 2021
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.07 KB | None | 0 0
  1. package linkedList;
  2.  
  3. public class LinkedList {
  4.     Node head, tail;
  5.     int size = 0;
  6.  
  7.     void inisialisasi() {
  8.         head = tail = null;
  9.     }
  10.  
  11.     boolean isEmpty() {
  12.         return size == 0;
  13.     }
  14.  
  15.     int size() {
  16.         return size;
  17.     }
  18.  
  19.     void addFirst(Node input) {
  20.         if (isEmpty()) {
  21.             head = input;
  22.             tail = input;
  23.         }
  24.         else {
  25.             input.pointer = head;
  26.             head = input;
  27.         }
  28.         size++;
  29.     }
  30.  
  31.     void addLast(Node input) {
  32.         if (isEmpty()) {
  33.             head = input;
  34.             tail = input;
  35.         }
  36.         else {
  37.             tail.pointer = input;
  38.             tail = input;
  39.         }
  40.         size++;
  41.     }
  42.  
  43.     void insertAfter(Object key, Node input) {
  44.         Node temp = head;
  45.         do {
  46.             if (temp.data.equals(key)) {
  47.                 input.pointer = temp.pointer;
  48.                 temp.pointer = input;
  49.                 size++;
  50.                 System.out.println("Insert data is succeed.");
  51.                 break;
  52.             }
  53.             temp = temp.pointer;
  54.         } while (temp != null);
  55.     }
  56.  
  57.     void insertBefore(Object key, Node input) {
  58.         Node temp = head;
  59.         while (temp != null) {
  60.             if ((temp.data.equals(key)) && (temp == head)) {
  61.                 this.addFirst(input);
  62.                 System.out.println("Insert data is succeed.");
  63.                 break;
  64.             }
  65.             else if (temp.pointer.data.equals(key)) {
  66.                 input.pointer = temp.pointer;
  67.                 temp.pointer = input;
  68.                 System.out.println("Insert data is succeed.");
  69.                 break;
  70.             }
  71.             temp = temp.pointer;
  72.         }
  73.     }
  74.  
  75.     void removeFirst() {
  76.         Node temp = head;
  77.         if (!isEmpty()) {
  78.             if (head == tail) head = tail = null;
  79.             else {
  80.                 temp = temp.pointer;
  81.                 head = temp;
  82.                 temp = null;
  83.             }
  84.             size--;
  85.         }
  86.         else System.out.println("Data is empty!");
  87.     }
  88.  
  89.     void removeLast() {
  90.         Node temp = head;
  91.         if (!isEmpty()) {
  92.             if (tail == head) {
  93.                 head = tail = null;
  94.             }
  95.             else {
  96.                 while (temp.pointer != tail) {
  97.                     temp = temp.pointer;
  98.                 }
  99.                 temp.pointer = null;
  100.                 tail = temp;
  101.                 temp = null;
  102.             }
  103.             size--;
  104.         }
  105.         else System.out.println("Data is empty!");
  106.     }
  107.  
  108.     void remove(Object key){
  109.         Node temp = head;
  110.         if (!isEmpty()) {
  111.             while (temp != null) {
  112.                 if (temp.pointer.data.equals(key)) {
  113.                     temp.pointer = temp.pointer.pointer;
  114.                     if(temp.pointer == null)
  115.                         tail=temp;
  116.                     break;
  117.                 }
  118.                 else if ((temp.data.equals(key)) && (temp == head)) {
  119.                     this.removeFirst();
  120.                     break;
  121.                 }
  122.                 temp = temp.pointer;
  123.             }
  124.         }
  125.         else
  126.             System.out.println("Data is empty!");
  127.         size--;
  128.     }
  129.  
  130.     public void cetakLinkedlist() {
  131.         Node p = head;
  132.         while (p != null) {
  133.             System.out.println(p.data);
  134.             p = p.pointer;
  135.         }
  136.     }
  137.  
  138.     void checkIndex(int index) {
  139.         if (index < 0 || index >= size) throw new IndexOutOfBoundsException("index = " + index + " size = " + size);
  140.     }
  141.  
  142.     public Object get(int index) {
  143.         checkIndex(index);
  144.         Node currentNode = head;
  145.         for (int i = 0; i < index; i++)
  146.             currentNode = currentNode.pointer;
  147.         return currentNode.data;
  148.     }
  149.  
  150.     public int indexOf(Object theElement) {
  151.         Node currentNode = head;
  152.         int index = 0;
  153.         while (currentNode != null && !currentNode.data.equals(theElement)) {
  154.             currentNode = currentNode.pointer;
  155.             index++;
  156.         }
  157.         if (currentNode == null) return -1;
  158.         else return index;
  159.     }
  160.  
  161.     Object removeIndex(int index) {
  162.         checkIndex(index);
  163.         Object removedElement;
  164.         if (index == 0) {
  165.             removedElement = head.data;
  166.             head = head.pointer;
  167.         }
  168.         else {
  169.             Node q = head;
  170.             for (int i = 0; i < index - 1; i++)
  171.                 q = q.pointer;
  172.             removedElement = q.pointer.data;
  173.             q.pointer = q.pointer.pointer;
  174.             tail = q;
  175.         }
  176.         size--;
  177.         return removedElement;
  178.     }
  179.  
  180.     public void addIndex(int index, Object theElement) {
  181.         if (index < 0 || index > size) throw new IndexOutOfBoundsException("index = " + index + " size = " + size);
  182.         if (index == 0) head = new Node(theElement, head);
  183.         else {
  184.             Node p = head;
  185.             for (int i = 0; i < index - 1; i++)
  186.                 p = p.pointer;
  187.             p.pointer = new Node(theElement, p.pointer);
  188.         }
  189.         size++;
  190.     }
  191. }
  192.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement