队列的操作及应用

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

**

《数据结构》实验报告书队列的操作及应用

学生姓名: **

学号:**

年级专业及班级:**

指导老师及职称: **

专业:网络工程

**.**

提交日期:2010年11月3日

实验名称:队列的操作及应用

实验内容:队列的创建及入队、出队操作

实验目的:

1.掌握顺序队列及链队的创建及入队、出队操作,能正确写出各函数

2.能正确地编译和运行

3.能利用队解决实际问题

实验时间:2010年11月1日

实验地点:计算机软件实验分室(一)

实验题目:

题目描述:

根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素空间。例如,给定5个元素空间构造循环队列,则只能存放4个元素。试根据入队及出队操作判断队列最后的元素存放情况,并输出最后队列中的元素值,即完成给定入队及出列操作后一次性全部出队的元素值。要求采用顺序队列完成。

输入:

输入的第一行为一个自然数n,表示要求构造的顺序循环队列空间数。第二行为操作次k,接下来k行为出队入队操作,每行各代表一次操作。入队用in表示,出队用out表示,如果是入队,则in隔一空格后为一整数,表示入队元素值。

输出:

输出完成所有入队出队操作后,一次性出队元素。用一个空格隔开。可以假定队在完成所有操作后不为空。

输入样例:

4

7

in 1

in 2

in 5

in 6

out

out

in 8

输出样例:

5 8

实验过程:

#include using namespace std;

int M;

typedef struct

{

int data[100];

int rear;

int front;

}SQueue;

void Init_SQ(SQueue &Q) {

Q.rear=0;

Q.front=0;

}

void in_SQ(SQueue &Q,int e)

{//将e入队

if((Q.rear+1)%M==Q.front) return;//队满Q.data[Q.rear]=e;

Q.rear=(Q.rear+1)%M;

}

void out_SQ(SQueue &Q,int &e)

{

if(Q.rear==Q.front) return ;

e=Q.data[Q.front];

Q.front=(Q.front+1)%M;

}

int main()

{

char st[10];

char a;

int k,e;

SQueue Q;

Init_SQ(Q);

cin>>M>>k;

a=getchar();

while(k!=0)

{cin>>st;

if(strcmp(st,"in")==0)

{

cin>>e;

in_SQ(Q,e);

}

if(strcmp(st,"out")==0)

{

out_SQ(Q,e);

}

k--;

}

while(Q.rear!=Q.front)

{

out_SQ(Q,e);

cout<

}

cout<

return 0;

}

实验测试:

2 3 4输入一:

3

5

in 1

in 2

in 3

in 4

in 5

输出一:

1 2

输入二:

4

5

in 1

in 2

out

in 3

in 4

输出二:

实验总结:本次实验操作主要是针对入队、出队的。

主要要注意以下几个问题:

一:要知道队列的定义、队列的初始化

二:注意入队、出队的操作,入队时要注意队满情况,出队时要注意队空情况。

相关文档
最新文档