C++用数组实现的静态队列
#ifndef _STATIC_QUEUE_H_
#define _STATIC_QUEUE_H_ // 静态queue模板,用数组实现的队列,在初始化的时候需要指定长度
template<class T>
class Static_Queue{
public:
Static_Queue(unsigned int size);
virtual ~Static_Queue();
bool push(T t);
bool pop(T &t);
unsigned int GetElementCnt();
void dump();
private:
unsigned int m_nSize;
T *m_arrT;
unsigned int m_nHead;
unsigned int m_nTail;
unsigned int m_nEmptyCnt;
}; template<class T>
Static_Queue<T>::Static_Queue(unsigned int size)
{
m_nSize = size;
m_arrT = new T[m_nSize];
memset(m_arrT,0,sizeof(T)*m_nSize);
m_nHead = 0;
m_nTail = 0;
m_nEmptyCnt = m_nSize;
} template<class T>
Static_Queue<T>::~Static_Queue()
{
delete[] m_arrT;
m_arrT = NULL;
} template<class T>
bool Static_Queue<T>::push(T t)
{
if( m_nEmptyCnt <= 0 )
{
return false;
}
m_arrT[m_nTail++] = t;
if(m_nTail >= m_nSize)
{
m_nTail = 0;
}
m_nEmptyCnt--;
return true;
} template<class T>
bool Static_Queue<T>::pop(T &t)
{
if( m_nEmptyCnt >= m_nSize )
{
return false;
}
t = m_arrT[m_nHead++];
if( m_nHead >= m_nSize )
{
m_nHead = 0;
}
m_nEmptyCnt++;
return true;
} template<class T>
unsigned int Static_Queue<T>::GetElementCnt()
{
return m_nSize - m_nEmptyCnt;
} template<class T>
void Static_Queue<T>::dump()
{
cout<<"head= "<<m_nHead<<" "<<"tail= "<<m_nTail<<endl;
cout<<"[";
for(int i = 0;i < m_nSize;i++ )
{
cout<<m_arrT[i]<<" ";
}
cout<<"]"<<endl;
} #endif
测试代码:
#include <iostream>
#include "StaticQueue.h"
using namespace std; int main()
{
int i = 0;
int arr[] = {0,1,2,3,4,5,6,7,8,9};
Static_Queue<int> qu(8);
for(i = 0;i<10;i++)
{
if(qu.push(arr[i]) == false)
{
cout<<"push "<<arr[i]<<" fail"<<endl;
}
}
for(i = 0;i < 5;i++)
{
int t = 0;
if(qu.pop(t) == true)
{
cout<<"pop "<<t<<endl;
}
}
for(i = 0;i<10;i++)
{
if(qu.push(arr[i]) == false)
{
cout<<"push "<<arr[i]<<" fail"<<endl;
}
}
for(i = 0;i < 10;i++)
{
int t = 0;
if(qu.pop(t) == true)
{
cout<<"pop "<<t<<endl;
}
}
return 0;
}
C++用数组实现的静态队列的更多相关文章
- C++数组实现的循环队列
#include<iostream> #include <string> /* 功能:数组实现的循环队列,C++实现,学习参考 */ using namespace std; ...
- JavaScript数组模拟栈和队列
*栈和队列:js中没有真正的栈和队列的类型 一切都是用数组对象模拟的 栈:只能从一端进出的数组,另一端封闭 FILO 何时使用:今后只要仅希望数组只能从一端进 ...
- Javascript用数组实现栈和队列
栈是遵循后进先出(LIFO)规则的一种有序集合,比如桌上的一叠书,我们只能从上面放或取. 队列是遵循先进先出(FIFO)规则的一种有序集合,比如排队,先排到的先离开. 数组也是一种有序的集合,它与上面 ...
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)
前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...
- JAVA该队列中的数组,圆阵队列,链队列
/** * 文件名:QueueText.java * 时间:2014年10月22下午9:05:13 * 笔者:维亚康姆维修 */ package chapter3; /** * 类名:ArrayQue ...
- Java的数组,栈,队列
import java.util.Arrays; public class Array<E> { private E[] data; private int size; //构造函数,传入 ...
- 关于JS数组的栈和队列操作
1.js支持重载吗? 虽然js 本身并没有函数重载,但是可以用arguments来模拟重载,函数名相同,参数不同,arguments的length属性,获取参数个数,索引属性获取参数值 2.什么是作用 ...
- [bzoj4698][Sdoi2008]Sandy的卡片_后缀数组_二分/单调队列_双指针
Sandy的卡片 bzoj-4698 Sdoi-2008 题目大意:题目链接. 注释:略. 想法: 这个题跟一个Usaco的题特别像.我们把这些串差分 现在我们要求的就是公共子串且出现次数不少于$k$ ...
- 使用python实现数组、链表、队列、栈
引言 什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表,集合和字 ...
随机推荐
- python开发_mysqldb安装
在python的API上面,看到了MySQLdb,即python可以操作mysql数据库 接下来,我就把我这两天的工作给大伙絮叨絮叨: 准备条件: 1.MySQL-python-1.2.4b4.win ...
- ZOJ3791 An Easy Game(DP)
给两个长n的01串s1和s2,要对s1进行k次修改,每次修改m个不同位置,问有几种方式修改成s2. 想偏了,只想到原始的01数值是不重要的,因为每个位置修改次数的奇偶性是确定的这一层.. 其实,这题只 ...
- 初识view
屏幕左上角为原点,向右为 x 轴, 向下为 y 轴. getLeft getTop getRight getBottom 分别返回 view 的左上右下的坐标,这里的坐标都是相对于view的父view ...
- mysql数据库之基础SQL语句/语法
SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家!简要介绍基础语句: 1.说明:创建数据库 Create DATABAS ...
- KMP算法(转载)
转载http://blog.csdn.net/yutianzuijin/article/details/11954939 kmp算法又称“看毛片”算法,是一个效率非常高的字符串匹配算法.不过由于其难以 ...
- android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到
android BroadcastReceiver ACTION_TIME_TICK 系统时间监听不到 今天做android上的消息推送,启动了一个独立service,然后在里面监听系统的ACTION ...
- 关于iOS测试机个数上限的详细规则
关于iOS测试机个数上限的详细规则 前言 公司的iOS测试机快达到苹果规定的100个上限了,而因为the new iPad新出,我们需要新的quota来测试新iPad,所以就仔细研究了一下苹果关于10 ...
- android开发事件监听
第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适, ...
- java 文件读写
http://blog.csdn.net/jiangxinyu/article/details/7885518
- 出现segment fault 错误的几种原因
segment fault 段异常各种原因www.MyException.Cn 发布于:2012-11-26 11:48:50 浏览:24次 0 segment fault 段错误各种原因一 造成se ...