队列存储与操作实验报告 下载本文

内容发布更新时间 : 2024/11/17 6:23:38星期一 下面是文章的全部内容请认真阅读。

实验四 队列存储与操作

一、实验目的

1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。 二、实验内容

1.顺序队列的实现和运算 2.链式队列的实现和运算 3.循环队列的实现和运

三、详细设计:

1、顺序队列的实现:

#include using namespace std;

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;

}