内容发布更新时间 : 2024/11/17 6:23:38星期一 下面是文章的全部内容请认真阅读。
实验四 队列存储与操作
一、实验目的
1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。 二、实验内容
1.顺序队列的实现和运算 2.链式队列的实现和运算 3.循环队列的实现和运
三、详细设计:
1、顺序队列的实现:
#include
const int Size=100; typedef char DataType;
class CirQueue {
public:
CirQueue() {
front=rear=0;//构造队列,初,front和rear指向 }
~CirQueue(){}
void EnQueue(DataType x) {
if((rear+1)%Size==front) {
cout<<\队列已经满了\ return; }
rear=(rear+1)%Size;//队尾指针在循环的意义下加 data[rear]=x;
cout< DataType GetQueue()//取队头 { if(isEmpty()) { cout<<\队列为空\ return 0; } int i; i=(front+1)%Size; return data[i]; } DataType DeQueue() { if(isEmpty()) { cout<<\队列为空\ return 0; } front=(front+1)%Size;//队头指针在循环的意义下加 return data[front]; } int isEmpty()//是否为空 { if(front==rear) { return 1; } else{ return 0; } } private: DataType data[Size]; int front,rear; }; int main() { CirQueue a; int index; DataType temp; do { cout<<\ cout<<\、入队操作\ cout<<\、取队头操作\ cout<<\、出队操作\ cout<<\、判断队列是否为空\cout<<\、退出\ cout<<\ cin>>index; if(index==5){return 0;} switch(index) { case 1: cout<<\请输入要入队的元素\ cin>>temp; a.EnQueue(temp); break; case 2: temp=a.GetQueue(); if(temp!=0) { cout<<\队头的元素为\ } break; case 3: temp=a.DeQueue(); if(temp!=0) { cout<<\出队的元素为\ } break; case 4: bool temp; temp=a.isEmpty(); if(temp) { cout<<\空队\ }else{ cout<<\非空队\ } break; } }while(index); return 0; }