Advertisement
exmkg

Untitled

Sep 28th, 2024
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.14 KB | None | 0 0
  1. class Node {
  2.     public int val;
  3.     public Node next;
  4.     public Node prev;
  5.  
  6.     public Node(int val, Node next, Node prev) {
  7.         this.val = val;
  8.         this.next = next;
  9.         this.prev = prev;
  10.     }
  11. }
  12.  
  13. class MyCircularDeque {
  14.  
  15.     Node head;
  16.     Node rear;
  17.     int size;
  18.     int capacity;
  19.  
  20.     public MyCircularDeque(int k) {
  21.         size = 0;
  22.         capacity = k;
  23.     }
  24.  
  25.     public boolean insertFront(int value) {
  26.         if (isFull()) return false;
  27.         if (head == null) {
  28.             // first element in list
  29.             head = new Node(value, null, null);
  30.             rear = head;
  31.         } else {
  32.             // add new head
  33.             Node newHead = new Node(value, head, null);
  34.             head.prev = newHead;
  35.             head = newHead;
  36.         }
  37.         size++;
  38.         return true;
  39.     }
  40.  
  41.     public boolean insertLast(int value) {
  42.         if (isFull()) return false;
  43.         if (head == null) {
  44.             // first element in list
  45.             head = new Node(value, null, null);
  46.             rear = head;
  47.         } else {
  48.             // add new element to end
  49.             rear.next = new Node(value, null, rear);
  50.             rear = rear.next;
  51.         }
  52.         size++;
  53.         return true;
  54.     }
  55.  
  56.     public boolean deleteFront() {
  57.         if (isEmpty()) return false;
  58.         if (size == 1) {
  59.             head = null;
  60.             rear = null;
  61.         } else {
  62.             head = head.next;
  63.         }
  64.         size--;
  65.         return true;
  66.     }
  67.  
  68.     public boolean deleteLast() {
  69.         if (isEmpty()) return false;
  70.         if (size == 1) {
  71.             head = null;
  72.             rear = null;
  73.         } else {
  74.             // update rear to the previous node
  75.             rear = rear.prev;
  76.         }
  77.         size--;
  78.         return true;
  79.     }
  80.  
  81.     public int getFront() {
  82.         if (isEmpty()) return -1;
  83.         return head.val;
  84.     }
  85.  
  86.     public int getRear() {
  87.         if (isEmpty()) return -1;
  88.         return rear.val;
  89.     }
  90.  
  91.     public boolean isEmpty() {
  92.         return size == 0;
  93.     }
  94.  
  95.     public boolean isFull() {
  96.         return size == capacity;
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement