c++ 队列基本操作实现
2014-03-06 23:40
357 查看
纯练手~
使用c++模板实现队列,测试文件在codeblocks下编译通过,在引用头文件时,需要#include "StaticQueue.cpp"不然会报错,明天再寻求原因吧。
头文件:
实现文件:
测试文件:
使用c++模板实现队列,测试文件在codeblocks下编译通过,在引用头文件时,需要#include "StaticQueue.cpp"不然会报错,明天再寻求原因吧。
头文件:
#ifndef STATICQUEUE_H_INCLUDED #define STATICQUEUE_H_INCLUDED template<class T> class StaticQueue { public: StaticQueue(); StaticQueue(int size); ~StaticQueue(); void enqueue(T data); T dequeue(); bool isEmpty(); bool isFull(); int count(); void display(); private: int rear; int front; int size; const static int DEFAULT; T* queue; }; #endif // STATICQUEUE_H_INCLUDED
实现文件:
#include <iostream> #include <cstdio> #include "StaticQueue.h" using namespace std; const int DEFAULT = 10; template<class T> StaticQueue<T>::StaticQueue() { queue = new T[DEFAULT]; size = DEFAULT; rear = front = 0; } template<class T> StaticQueue<T>::StaticQueue(int size) { queue = new T[size]; this->size = size; rear = front = 0; } template<class T> StaticQueue<T>::~StaticQueue() { delete [] queue; queue = 0; size = 0; rear = front = 0; } template<class T> bool StaticQueue<T>::isEmpty() { if(front == rear) return true; return false; } template<class T> bool StaticQueue<T>::isFull() { if((rear - front) >= size) return true; return false; } template<class T> void StaticQueue<T>::enqueue(T data) { if(isFull() == 0) { queue[rear] = data; rear++; } else fprintf(stderr, "Queue is full now.\n"); } template<class T> T StaticQueue<T>::dequeue() { if(isEmpty() == 0) { T tmp = queue[front]; front++; return tmp; } else { fprintf(stderr, "Queue is empty now.\n"); return NULL; } } template<class T> int StaticQueue<T>::count() { return(rear-front); } template<class T> void StaticQueue<T>::display() { int i; for(i=front; i<rear; i++) { cout<<queue[i]<<" "; } cout<<endl; }
测试文件:
//#include "StaticQueue.cpp" #include <iostream> #include <cstdio> #include "StaticQueue.cpp" using namespace std; int main() { StaticQueue<int> q(4); cout<<q.count()<<endl; int arr[] = {1,2,3,4}; int i; for(i=0; i<4; i++) q.enqueue(arr[i]); q.display(); return 0; }
相关文章推荐
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 顺序队列的基本操作实现c++
- c++实现基本循环队列操作
- 链式队列的基本操作实现c++
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- C++队列实现的基本操作
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- 【数据结构】双向循环线性表的基本操作--C++/C实现
- 顺序栈的基本操作实现c++
- 队列的基本操作及实现