循环队列

循环队列

关键:位置向后移动一位的操作方法。(rear-front+size)%size;求元素个数

image-20221012165901058

循环队列是人们臆想出来的循环,解决单排队列空间无法重复利用的情况。底层实现就是用数组实现。但是保留了最后一个位置为标志位。

循环队列的结构

	bool isEmpty() {
		return front == rear;
	}
	bool isFull() {
		return front == (rear + 1) % size;
	}
//进队列
	void EnQueue(int data) {
		if (isFull()) {
			printf("error:The Queue Is Full!");
			return;
		}
		Data[rear] = data;
		rear = (rear + 1) % size;
	}
	//出队列并返回
	void DeQueue() {
		if (isEmpty()) {
			printf("error:The Queue Is Empty!");
			return;
		}
		//逻辑上删除
		front = (front + 1) % size;
	}
	//得到队头元素
	int top() {
		return Data[front];
	}

队列移动不是 front++,而是通过front=(front+1)%size,这样空出了最后一个为标志位。实现循环队列。int QueueLength(struct Queue *p)

posted @ 2022-10-12 17:07  程序员包子  阅读(46)  评论(0)    收藏  举报