循环数组实现队列
来源:互联网 发布:如何更新mac os系统 编辑:程序博客网 时间:2024/05/22 03:26
固定SIZE
头文件
#ifndef __QUEUE_H__#define __QUEUE_H__#include "stdafx.h"#include <windows.h>#include <iostream>using namespace std;#define MAX_SIZE 5#define CREATE_THREAD_SAFE() \{ \if(m_bThreadSafe) \{ \m_Mutex = CreateMutex(NULL,FALSE, NULL); \} \}#define DESTROY_THREAD_SAFE() \{ \if(m_bThreadSafe) \{ \CloseHandle(m_Mutex); \} \}#define THREAD_SAFE_LOCK() \{ \if(m_bThreadSafe) \{ \WaitForSingleObject(m_Mutex, INFINITE); \} \}#define THREAD_SAFE_UNLOCK() \{ \if(m_bThreadSafe) \{ \ReleaseMutex(m_Mutex); \}\}class Queue{public:Queue(bool threadSafe = false);//Queue(int maxSize, bool threadSafe = false);int insert(int value);int pop();int size();void printQ();private:int m_nData[MAX_SIZE];bool m_bThreadSafe;int m_nFront;int m_nRear;int m_size;HANDLE m_Mutex;};#endif
Queue::Queue(bool threadSafe):m_bThreadSafe(threadSafe),m_nFront(0),m_nRear(0),m_size(0){CREATE_THREAD_SAFE();}int Queue::insert(int value){int retVal = -1;THREAD_SAFE_LOCK();if(size() == MAX_SIZE)//full{retVal = -1;}else{m_nData[m_nRear] = value;m_nRear = (m_nRear+1)%MAX_SIZE;m_size++;retVal = 0;}THREAD_SAFE_UNLOCK();return retVal;}int Queue::pop(){int retVal = -1;THREAD_SAFE_LOCK();if(size() == 0)//empty{retVal = -1;}else{m_nFront = (m_nFront+1)%MAX_SIZE;m_size--;retVal = 0;}THREAD_SAFE_UNLOCK();return retVal;}int Queue::size(){return m_size;}void Queue::printQ(){THREAD_SAFE_LOCK();for(int i=0; i<size(); i++){printf("%d", m_nData[(i+m_nFront)%MAX_SIZE]);}printf("\n");THREAD_SAFE_UNLOCK();}
main函数
int _tmain(int argc, _TCHAR* argv[]){Queue q1(true);q1.insert(1);q1.printQ();q1.insert(2);q1.printQ();q1.insert(3);q1.printQ();q1.insert(4);q1.printQ();q1.insert(5);q1.printQ();q1.insert(6);q1.printQ();q1.pop();q1.printQ();q1.insert(7);q1.printQ();q1.pop();q1.printQ();q1.pop();q1.printQ();q1.pop();q1.printQ();q1.pop();q1.printQ();q1.pop();q1.printQ();system("pause");return 0;}
0 0
- 数组实现循环队列
- 数组实现循环队列
- 循环数组实现队列
- 循环队列--数组实现
- 数组实现循环队列
- 数组实现循环队列
- 数组实现循环队列
- 队列----循环数组实现队列
- 用循环数组实现队列
- Java数组实现循环队列
- 用数组实现循环队列
- 静态数组实现循环队列
- 动态数组实现循环队列
- 循环队列的数组实现
- 静态数组实现循环队列
- 动态数组实现循环队列
- 循环队列—数组实现
- C 数组实现 循环队列
- poj-1185 炮兵阵地
- 怎样启动与停止Nagios
- 微观经济学--第4章 供给与需求的市场力量
- iOS 开发中的那些坑(1)
- 迪杰斯特拉算法 求最短路径
- 循环数组实现队列
- HDU 3613 Best Reward
- Calendar
- tableView 尾视图一直固定不动
- java工具
- 2015年双11手机淘宝前端技术之H5性能最佳实践
- block与协议-代理
- UVA 10401 Injured Queen Problem
- 百度地图API学习笔记(二)