队列存储与操作实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验四队列存储与操作

一. 实验目的

1、掌握队列顺序存储结构(循环队列)及实现及操作

2、掌握队列的链接存储结构及实现及操作

二. 实验内容

1、建立一个空顺序存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。

2、建立一个空链式存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。

三、详细设计:

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<

return;

}

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<<"1、入队操作"<

cout<<"2、取队头操作"<

cout<<"3、出队操作"<

cout<<"4、判断队列是否为空"<

cout<<"5、退出"<

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;

}

2、链队列的实现:

#include

using namespace std;

const int Size=100;

typedef char DataType;

struct Node

{

DataType data;

Node *next;

};

class LinkQueue

{

public:

LinkQueue()

{

auto head=new Node;

head->next=NULL;

front=rear=head;

}

~LinkQueue(){}

void EnQueue(DataType x)

{

auto s=new Node;

s->data=x;

s->next=NULL;//申Θ?请?一?个?数簓据Y域 ?为aX的?结á点?s

rear->next=s;

rear=s;

}

DataType GetQueue()//取?队ó头 ?

{

if(isEmpty())

{

cout<<"队ó列 为a空?"<

return 0;

}

相关文档
最新文档