用链表实现队列(Java)

LeetCode 622的单链表实现

class Node{//定义一个节点类
    public int value;//存放值
    public Node next;//存放下一个节点
    public Node(int value){
        this.value = value;
        this.next = null;
    }
}



class MyCircularQueue {
    public Node front,rear;//定义头节点和尾节点
    public int size;//链表内节点的有效个数
    public int maxSize;
    public MyCircularQueue(int maxSize) {
        front = rear = null;
        this.maxSize = maxSize;
    }
    
    public boolean enQueue(int value) {
        if(isFull()){
            return false;
        }
        Node temp = new Node(value);
        if(isEmpty()){//如果为空,将首尾节点都指向temp
            front = rear = temp;//此时front和rear在同一个地址
        }
        rear.next = temp;//将temp接在rear后面,此时front的next中也存放了temp
        rear = temp;//将rear指向temp,即rear指向最后一个节点
        size++;//增加一个有效个数
        return true;
    }
    
    public boolean deQueue() {
        if(isEmpty()){
            return false;        
        }
        front = front.next;//将头节点后移
        size--;//有效个数减少
        return true;
    }
    
    public int Front() {
        if(isEmpty()){
            return -1;
        }
        return front.value;
    }
    
    public int Rear() {
       if(isEmpty()){
           return -1;
       }
       return rear.value;
    }
    
    public boolean isEmpty() {
       return size == 0;
    }
    public boolean isFull() {
        return size == maxSize;
         

    }
}

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值