合肥禽配
HEFEI UNIVERSITY
计算机科学与技术系
实验报告
专业名称 课程名称 项目名称
计算机科学与技术 ______ 数据结构与算法 _________ 实验三队列实验 _________
班 级 ______________
学 号 _____________________ 姓 名 ____________________ 同组人员
无 __________________
实验日期 _______
实验三队列实验
实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和 链队
列的入队和出对操作。
(1)先实现循环队列的入队和出队操作
1?问题分析
本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队 操作。
完成该实验需要以下4个子任务:
砂义一个循环队列的存储结构,定义队列的基本算法。
②定义一个display ()函数实现队列元素的输出看入队是否成功
④在主函数中完成操作
测试数据设计如下: 1 2 3 4 5 6
2. 概要设计
为了实现上述程序功能,需要:②声明一个循环队列②定义出队列的基本算法, ②通过键盘输入5个整数,入队,出队 ②在主函数中先往队列里输入5个元 素,然后入队,输出,看入队是否成功,然后出队,再调用 数看是否出队。
1)本程序包含7个函数:
1主函数main() 2. 置空队:InitQueue() 3. 判对空:QUeUeEmPtyo 4. 判队满:QUeUeFUll() 5. 入队:AddO 6. 出队:DeIeteO 7. display()
display ()函
各函数关系如下:
Ini tQueue() QueueEmptyO QueueFuI1()
Add()Ma in
DeIete() display()
3、详细设计
实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主和模块都需要代码。
(1)循环队列
#defi ne maxle n 10 typedef StrUCt{
int data [maxle n]; int front; in t rear; }SeqQueue; (2)队列基本算法
SeqQUeUe *ln itQueue(SeqQueue *q) // 建立一个空循环队列
{
q=(SeqQueue *)malloc(sizeof (SeqQueue)); q->fro nt=0; q->rear=0; return q; }
int QueueFull (SeqQUeUe *q){
//
判断队列是否为满
if (q->fron t==(q->rear+1)%maxle n)
return 1; else return 0; }
程序
}
int QueueEmpty(SeqQueue *q){ if (q->rear==q->front)
return 1; else return 0;
}
// 判断队列是否为空
void Add (SeqQueue *q,int x) //
{
if(!QueueFull(q)){
q->rear=(q->rear+1)%maxlen; q->data[q->rear]=x; }else printf (\
}
入队
void Delete(SeqQueue *q){ // if (!QueueEmpty(q))
q->front=(q->front+1)%maxlen; else printf (\
}
出队
(3)用display()函数输出循环队列元素 void display(SeqQueue *q)
{
int i;
if(q->front!=q->rear)
{
//输出循环队列q的元素
printf(\输出循环队列元素: \i=q->front; do
{
//循环队列非空,输出队列元素
i=(i+1)%maxlen;
printf(\=q->rear);
}
else
printf(\队列为空! \
(4)在主函数中先往队列里输入 5 个元素,输出,看入队是否成功,然后出队,
再调用 display ()函数看是否出队。
int main() {
SeqQueue *q;
int i,y;
q=ln itQueue(q);
Printf(\请输入5个元素\for(i=0;i<5;i++) {
SCan f(\Add(q,y); } display(q); for(i=0;i<5;i++) {
DeIete(q); }
Printf(\请输入1个元素\nf(\Add(q,y);
display(q); return 0;
//建立空循环队列 //入队5个元素
//输出循环队列元素 //把5个元素出队
//再入队一个元素 //再输出循环队列元素
}
4、调试分析
编译无错误 5、用户使用说明
程序名为class1.exe ,在DEBUGt件夹里面。运行环境
ViSUaI C++ 6.0
。
6、测试结果
请输入吕个元素1 2 3 4 5 ?i由循环罠列元素:12345 请 ?λl÷7E?6 输出循环队列元索:6Press any key to COntinUe 7、附录
#i nclude