当前位置:   article > 正文

循环队列(c++版本)_循环队列 c++

循环队列 c++

原理

在这里插入图片描述

代码实现

#include<iostream>
#include<stdlib.h>
using namespace std;
#define MAXSIZE 100
typedef int ElemType;
typedef long long ll;
typedef struct {
	ElemType* base;//分配需要的存储空间
	ll front;
	ll rear;
}queue;
bool InitQuque(queue& s) {
	s.base = (ElemType*)malloc(sizeof(ElemType) * MAXSIZE);
	if (!s.base)return false;
	s.front = s.rear = 0;
	return true;
}
ll QueueLength(queue&q) {
	return (q.rear - q.front + MAXSIZE) % MAXSIZE;
}
bool pop(queue& q) {
	if (q.front == q.rear)return false;//判断是否为空
	q.front = (q.front + 1) % MAXSIZE;
	return true;
}
bool insert(queue& s, ElemType val) {
	if ((s.rear + 1) % MAXSIZE == s.front)return false;//判断是否为满
	s.base[s.rear] = val;
	s.rear = (s.rear + 1) % MAXSIZE;
	return true;
}
bool empty(queue& que) {
	return que.front == que.rear;
}
ElemType front(queue& que) {
	return que.base[que.front];
}
int main() {
	queue que;
	if (!InitQuque(que))cout << "分配内存错误" << endl;
	for (int i = 0; i < 102; i++) {
		if (!insert(que, i)) {
			cout << "超出其范围" << endl;
		}
	}
	while (!empty(que)) {
		cout << front(que) << " ";
		pop(que);
	}
	cout << endl;
	for (int i = 0; i < 102; i++) {
		if (!insert(que, i)) {
			cout << "超出其范围" << endl;
		}
	}
	while (!empty(que)) {
		cout << front(que) << " ";
		pop(que);
	}
	pop(que);
	return 0;
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

结果如下

由于多了一个空隙来作为分辨队列为空还是为满,所以就到98
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/707140
推荐阅读
相关标签
  

闽ICP备14008679号