重庆工商大学
《数据结构》 课程实验报告封面
专业班级: 12计算机一班 学 号: 2012131152
学生姓名: 古应波 实验室: 10412
实验题目: 顺序队列、链队列的操作
指导教师: 梁新元 成 绩:
日期:2013年 10 月 日 第 6 周 星期 3 节次 4-5
评分表 序号 1 项目 算法思想 算法描述 实验数据与结果 总结 排版 正确性 友好性 可读性 健壮性 创新与多样性 总分 自评分 互评分 组长评分 教师评分 2 3 10 4 2 63 4 4 4 4 实验报告质量 2 3 4 5 6 源程序质量 10 合计 总分 评分人签字
7 8 9 第 0 页 共 17 页
目录
一、 实验题目 ---------------------------------------------------------------------------------------------------- 0
二、 实验目的 ---------------------------------------------------------------------------------------------------- 0
三、 实验内容 ---------------------------------------------------------------------------------------------------- 0
四、 实验要点与要求 ------------------------------------------------------------------------------------------- 0
五、 算法思想 ---------------------------------------------------------------------------------------------------- 0
六、 算法描述及流程图 ---------------------------------------------------------------------------------------- 3
七、 实验数据及实验结果 ------------------------------------------------------------------------------------- 4
八、 程序组成结构示意图 ------------------------------------------------------------------------------------- 4
九、 顺序队列调试截图 ---------------------------------------------------------------------------------------- 5
十、 链队列调试截图 ------------------------------------------------------------------------------------------- 7
十一、 顺序队列源代码 ---------------------------------------------------------------------------------------- 8
十二、 链队列源代码 ------------------------------------------------------------------------------------------ 11
第 1 页 共 17 页
实验报告的内容与要求
一、实验题目
顺序队列、链队列的基本操作 二、实验目的
了解顺序队列、链队列的结构特点及有关概念,掌握其基本操作算法。
三、实验内容
实现顺序队列和链队列的初始化、进队、出队、销毁操作
四、实验要点与要求
1. 处理的数据类型即ElemType的类型
基本版要求:整型、字符型
扩展版要求:字符串型(基础较好的同学) 2. 必须采用函数调用
五、算法思想
队列的特点是一端进,另一端出,由此需要定义队首指针和队尾指针,分别用于出队和进队的相关操作
bool InQuene(SqQuene *&q,ElemType d)//入队元素 {
if(q->rear==MaxSize-1) {
cout<<\队满!\< 第 0 页 共 17 页 } q->rear++; q->data[q->rear]=d; return true; } 判断队列为满的条件为队尾指针指向数组最大处,由于出队的方式所限,顺序队会出现假溢出的情况,为了解决这个问题,可以采用环队或者链队代替。 链队算法如下 bool InNode(SqNode *&n,ElemType &e) { QNode *q; q=(QNode *)malloc(sizeof(QNode)); q->data=e; q->next=NULL; if(n->rear==NULL) n->front=n->rear=q; else { } cout<<\入队成功!\< } n->rear->next=q; n->rear=q; 第 1 页 共 17 页