循环队列实现(通过设置标志位tag位判断空队满队)
来源:互联网 发布:魅族系统升级清除数据 编辑:程序博客网 时间:2024/05/22 01:58
#include <iostream>#include <stdlib.h>#include <stdio.h>#define OK 1#define ERROR 0#define OVERFLOW 0#define QElemType int#define MAXQSIZE 6using namespace std;typedef struct{ QElemType *base; int qFront; int qRear; int tag = 0;} SqQueue;//初始化int init_queue(SqQueue &sq){ sq.base = (QElemType*)malloc(MAXQSIZE*sizeof(QElemType)); if(!sq.base) { exit(OVERFLOW); } sq.qFront = sq.qRear = 0; return OK;}//队列长度int length_queue(SqQueue sq){ if(sq.tag == 1) { return MAXQSIZE; } return (sq.qRear - sq.qFront + MAXQSIZE)%MAXQSIZE;}//进队列int en_queue(SqQueue &sq,QElemType e){ if(length_queue(sq)==MAXQSIZE) { return ERROR; } sq.base[sq.qRear] = e; sq.qRear = (sq.qRear+1)%MAXQSIZE; if(sq.qFront == sq.qRear&&sq.tag == 0) { sq.tag = 1; } return OK;}//出队列int de_queue(SqQueue &sq,QElemType &e){ if(length_queue(sq)==0) { return ERROR; } e = sq.base[sq.qFront]; sq.qFront = (sq.qFront+1)%MAXQSIZE; sq.tag = 0; return OK;}int main(){ SqQueue sq; init_queue(sq); QElemType e=1; en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); en_queue(sq,e); cout<<length_queue(sq)<<endl; QElemType e1 = 0; de_queue(sq,e1); cout<<e1<<endl; cout<<length_queue(sq)<<endl;}
0 0
- 循环队列实现(通过设置标志位tag位判断空队满队)
- 通过设置标志位tag判断队空队满的循环队列
- 循环队列(用标志位实现方法)
- 要求顺序循环队不损失一个空间,全部能够得到有效利用,试采用设置标志位tag的方法解决“假溢出”问题,实现顺序循环队列算法
- 循环搜索(使用标志位)
- 判断位&设置位
- 标志位的判断方法
- 利用位运算设置标志位
- 设置标志位提取字符串
- 位标志
- 标志位
- 标志位
- 标志位
- 中断中判断状态标志位
- open() 标志位的设置与清除
- 编程基础_设置标志位
- 16位汇编 cmp jne实现判断和循环
- c++ 位操作实现数据标志位获取与更新
- outguess 使用方法
- 实验吧密码学CTF--chinese hacker
- 【MyBatis学习03】调用Mapper映射的3种使用方式
- Ex3:用CImg编写灰度图像直方图均衡化和颜色转换
- 学习日记-内部类,
- 循环队列实现(通过设置标志位tag位判断空队满队)
- 交叉编译ncurses-6.0和minicom到ARM板
- [C++]Vector简介
- 数据库概述
- vm模板
- 1004
- tomcat解决某个文件读取失败(例如:以汉字命名的一张图片)的问题
- python基础实例
- CCF201312-2-ISBN号码