队列的操作及应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
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 输出二: 实验总结:本次实验操作主要是针对入队、出队的。 主要要注意以下几个问题: 一:要知道队列的定义、队列的初始化 二:注意入队、出队的操作,入队时要注意队满情况,出队时要注意队空情况。