数据结构-顺序队列
来源:互联网 发布:网络教育本科毕业论文 编辑:程序博客网 时间:2024/06/05 05:30
// seq_queue.h#ifndef SEQ_QUEUE_H#define SEQ_QUEUE_H#include <iostream>template<typename Type> class Sequence_queue{public: Sequence_queue(int size) : m_front(0), m_rear(0), m_count(0), m_maxsize(size) { m_elements = new Type[size]; if(m_elements == NULL) { std::cout << __FUNCTION__ << " application error " << std::endl; exit(1); } } ~Sequence_queue() { delete[] m_elements; }public: void MakeEmpty(); bool IsEmpty(); bool IsFull(); bool EnQueue(const Type item); Type DeQueue(); Type GetData(); void Print();private: int m_front; int m_rear; int m_count; int m_maxsize; Type *m_elements;};template<typename Type> void Sequence_queue<Type>::MakeEmpty(){ m_count = 0; m_front = 0; m_rear = 0;}template<typename Type> bool Sequence_queue<Type>::IsEmpty(){ return (m_count == 0);}template<typename Type> bool Sequence_queue<Type>::IsFull(){ return (m_count == m_maxsize);}template<typename Type> bool Sequence_queue<Type>::EnQueue(const Type item){ if(IsFull()) { std::cout << __FUNCTION__ << " error : queue is full " << std::endl; return 0; } m_elements[m_rear] = item; m_rear = (m_rear + 1) % m_maxsize; m_count++; return 1;}template<typename Type> Type Sequence_queue<Type>::DeQueue(){ if(IsEmpty()) { std::cout << __FUNCTION__ << " error : queue is empty " << std::endl; return 0; } Type tmp = m_elements[m_front]; m_front = (m_front + 1) % m_maxsize; m_count--; return tmp;}template<typename Type> Type Sequence_queue<Type>::GetData(){ if(IsEmpty()) { std::cout << __FUNCTION__ << " error : queue is empty " << std::endl; return 0; } return m_elements[m_front];}template<typename Type> void Sequence_queue<Type>::Print(){ std::cout << "front"; for(int i = 0; i < m_count; i++) { std::cout << "--->" << m_elements[(m_front + i + m_maxsize) % m_maxsize]; } std::cout << "--->rear" << std::endl << std::endl << std::endl;}#endif // SEQ_QUEUE_H
// main.cpp#include <iostream>#include "seq_queue.h"using namespace std;int main(int argc, char *argv[]){ Sequence_queue<int> queue(10); int init[10] = {1, 3, 5, 7, 9, 11, 13,15, 17, 19}; for(int i = 0; i< 10; i++) { queue.EnQueue(init[i]); } queue.Print(); cout << queue.DeQueue() << endl; queue.Print(); for(int i = 5; i < 10; i++) { queue.EnQueue(init[i]); } queue.Print(); cout << queue.GetData() << endl; queue.MakeEmpty(); queue.Print(); queue.EnQueue(1); queue.Print(); return 0;}
0 0
- 【数据结构-队列】顺序队列
- 数据结构:队列- 顺序队列
- 数据结构之队列-顺序队列
- 数据结构之顺序队列
- 数据结构,队列,顺序表示
- 【数据结构】顺序队列 Queue
- 数据结构之顺序队列
- 【数据结构】顺序队列_Queue
- 数据结构之顺序队列
- 【数据结构】·【顺序队列】
- 数据结构之顺序队列
- 【数据结构】顺序队列
- 数据结构-顺序环形队列
- 数据结构--顺序队列
- 数据结构-顺序队列
- 数据结构---队列---顺序表
- 顺序队列-数据结构(10)
- 数据结构之顺序队列
- VS 2010 C#程序总结
- MyBatis 实战小项目 自动回复机器人
- BLE 4.0 概述
- hadoop安装和维护02--创建用户和组
- JVM内存管理及垃圾回收【转】
- 数据结构-顺序队列
- membercached安装与部署及应用
- error running app no target device found
- Java日期字符串排序
- Android判断真机和模拟器
- 可以自定义布局的对话框---CommonDialog
- Cococa初学者使用锁的坑(Exec_bad_Instruction)
- hadoop HDFS结构
- js的闭包与作用域/作用域链