循环队列

为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这种循环队列可以以单链表的方式来在实际编程应用中来实现。




队列的常用操作:入队,出队,判空,统计个数,访问队列头尾;

由于队列和栈都是线性表,所以队列也同样可以用数组模拟来手动实现。但是由于队列的出队与入队在不同的两端,所以我们要引入一个循环队列的概念。

如果用数组模拟队列,入队的时候,添加元素;出队的时候,一种处理是,队首位置不变,后面的元素往前面移动,覆盖掉队首,这种方法需要移动所有元素,时间耗费的多;第二种是队首的位置往第二位移动,让第二位的位置成为新的队首位置这种方法只改变队首的位置,但是以前抛弃的队首的位置不会被用到,浪费空间,所以--用到了循环队列;




class queue {
	final int maxsize = 10000;
    int q[] = new int[maxsize];//队列大小,预估
    int front, rear, count;
    queue() {
        front = 0;
        rear = 0;
        count = 0;
    }
    void push(int x) {
        count++;
        if (count == maxsize) {
            // 溢出
        }
        q[rear] = x;
        rear = (rear + 1) % maxsize;
    }
    int pop() {
        count--;
        front = (front + 1) % maxsize;
        return q[front];
    }
    int front_val() {
        return q[front];
    }
    boolean empty() {
        if (count == 0) {
            return true;
        }
        return false;
    }
};



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值