leetcode641-设计循环双端队列

设计循环双端队列

class MyCircularDeque {
    class ListNode{
        int val;
        ListNode prev, next;
        public ListNode(){
            this.prev = this.next = null;
        }
        public ListNode(int val){
            this.val = val;
            this.prev = this.next = null;
        }
    }
    ListNode head = new ListNode(), tail = new ListNode();
    int capacity, size = 0;
    public MyCircularDeque(int k) {
        capacity = k;
        head.prev = null;
        head.next = tail;
        tail.prev = head;
        tail.next = null;
    }
    
    public boolean insertFront(int value) {
        if(size == capacity)    return false;
        else{
            ListNode node = new ListNode(value);
            node.prev = head;
            node.next = head.next;
            head.next.prev = node;
            head.next = node;
            size++;
            return true;
        }
    }
    
    public boolean insertLast(int value) {
        if(size == capacity)    return false;
        else{
            ListNode node = new ListNode(value);
            node.prev = tail.prev;
            node.next = tail;
            tail.prev.next = node;
            tail.prev = node;
            size++;
            return true;
        }
    }
    
    public boolean deleteFront() {
        if(size == 0)   return false;
        else{
            ListNode node = head.next.next;
            head.next = node;
            node.prev = head;
            size--;
            return true;
        }
    }
    
    public boolean deleteLast() {
        if(size == 0)   return false;
        else{
            ListNode node = tail.prev.prev;
            tail.prev = node;
            node.next = tail;
            size--;
            return true;
        }
    }
    
    public int getFront() {
        if(size == 0)   return -1;
        else    return head.next.val;
    }
    
    public int getRear() {
        if(size == 0)   return -1;
        else    return tail.prev.val;
    }
    
    public boolean isEmpty() {
        return size == 0;
    }
    
    public boolean isFull() {
        return size == capacity;
    }
}
posted @ 2022-08-15 10:41  xzh-yyds  阅读(19)  评论(0)    收藏  举报