队列——顺序存储结构及其基本运算(非循环队列)

来源:互联网 发布:java jar main class 编辑:程序博客网 时间:2024/05/19 14:40

该文章主要介绍非循环队列的顺序存储结构以及相关运算。

头文件:SqQueue.h

template <typename T>class SqQueueClass//非循环队队列类模板{T *data;  //存放队中元素int front, rear;//队头和队尾指针public://==============非循环队基本运算算法===================SqQueueClass();//构造函数~SqQueueClass();//析构函数bool QueueEmpty();//判断队列是否为空bool enQueue(T e);//进队列算法bool deQueue(T &e);//出队列算法};

源文件:SqQueue.cpp

#include <iostream>#include "SqQueue.h"const int MaxSize = 100;//=============非循环队基本运算算法=========================template <typename T>SqQueueClass<T>::SqQueueClass()//构造函数{data = new T[MaxSize];//为data分配空间front = rear = -1;//队头队尾指针置初值}template <typename T>SqQueueClass<T>::~SqQueueClass()//析构函数{delete[] data;}template <typename T>bool SqQueueClass<T>::QueueEmpty()//判断队列是否为空{return (front == rear);}template <typename T>bool SqQueueClass<T>::enQueue(T e)//进队列算法{if (rear == MaxSize - 1)return false;rear++;data[rear] = e;return true;}template <typename T>bool SqQueueClass<T>::deQueue(T &e)//出队列算法{if (front == rear)//队空下溢出return false;front++;e = data[front];return true;}

主函数:main.cpp

#include"SqQueue.cpp"#include<iostream>using namespace std;//===============非循环队基本运算算法===============void main(){SqQueueClass<char> sq;//定义一个字符顺序队sqchar e;cout << "建立一个空队sq\n";cout << "队sq" << (sq.QueueEmpty()?"空":"不空") << endl;cout << "元素a进队\n"; sq.enQueue('a');cout << "元素b进队\n"; sq.enQueue('b');cout << "元素c进队\n"; sq.enQueue('c');cout << "元素d进队\n"; sq.enQueue('d');cout << "元素e进队\n"; sq.enQueue('e');cout << "队sq" << (sq.QueueEmpty()?"空":"不空") << endl;cout << "所有元素出队次序:";while (!sq.QueueEmpty())//队不空循环{sq.deQueue(e);//出队元素ecout << e << " ";//输出元素e}cout << endl;cout << "销毁队sq" << endl;}


阅读全文
0 0
原创粉丝点击