顺序循环队列和链式队列的类定义和实现.docx
文本预览下载声明
顺序循环队列的类定义(数组)和实现程序构思:本程序将data表示成数据类型为datatype的数组,front为顺序循环队列的对头指示器,rear为顺序循环队列的队尾指示器。首先给出了顺序循环队列的类定义,然后给出了函数实现部分,最后测试,输出结果。程序代码:queue1.h#define QueueSize 10typedef int datatype; class Cirqueue{private: int front;int rear;int count;datatype data[QueueSize];public://构造函数Cirqueue();//判断栈是否为空bool queueEmpty();//判断栈否为满bool queueFull();//栈存在则返回栈的元素个数,即栈的长度int QueueLength();//取队列的头元素datatype queueFront();//入队void enqueue(datatype);//出对datatype dequeue();};Queue1.cpp#include iostream#include iomanipusing namespace std;#include queue1.h//构造函数Cirqueue::Cirqueue(){front=0;rear=0;count=0;}//判断栈是否为空bool Cirqueue::queueEmpty(){if(count==0)return true;elsereturn false;}//判断栈否为满bool Cirqueue::queueFull(){if(count==QueueSize)return true;elsereturn false;}//栈存在则返回栈的元素个数,即栈的长度int Cirqueue::QueueLength(){return count;}//取队列的头元素datatype Cirqueue::queueFront(){if (queueEmpty()==true){cout队列为空!endl;exit(1);}return data[front];}//入队void Cirqueue::enqueue(datatype x){if (queueFull()==true){cout队列已满!endl;exit(1);}data[rear]=x;count++;rear=(rear+1)%QueueSize;}//出对datatype Cirqueue::dequeue(){datatype item;if (queueEmpty()==true){cout队列为空endl;exit(1);}item=data[front];count--;front=(front+1)%QueueSize;return item;}Queue1m.cpp#include iostream.h#include iomanip.h#include stdlib.h#include string.h#include queue1.hvoid main(){cout-------------queue1---------------endl;Cirqueue MyQueue;int i,x,m;cout输入随机产生的种子数:;cinm;srand(m);for (i=0;iQueueSize;i++){x=rand()%100;MyQueue.enqueue(x);}cout循环队列的长度MyQueue.QueueLength()endl;cout输出循环队列:endl;while (MyQueue.queueEmpty()!=true){x=MyQueue.dequeue();coutsetw(4)x;}coutendl;}程序运行结果:注:本程序可将data[QueueSize]改成指针类型datatype *data,然后在构造函数中对data进行初始化。链式队列的类定义和实现程序构思:本程序将front表示成数据类型为结构体queuenode的指针变量,front为链式队列的对头指示器,rear为链式队列的队尾指示器。首先给出了链式队列的类定义,然后给出了函数实现部分,最后测试,输出结果。程序代码:Linqueue.h#define QueueSize 10typedef int datatype; typedef struct QueueNode{datatype data;struct QueueNode *next;}queuenode;class linkqueue{private: queuenode *front;queuenode *rear;int coun
显示全部