数据结构
目的和要求
目的:学会队列的应用
要求:自己声明并实现队列,利用自己编写的队列完成前8行杨辉三角的打印
二、实验环境
软件环境:Dev c++
三、实验内容
利用队列打印杨辉三角前八行
四、实验过程
用文字、图(流程图等)、表格等方式记录实验过程中分析、设计工作。
首先声明和实现队列;
回顾队列的运算:初始化、析构、判空、判满(考虑循环队列中的假满)、入队、出队、取队首元素。
考虑如何进行杨辉三角的打印。
4.1 任务定义和问题分析
任务定义:逻辑结构——队列的应用
问题一:
如何用最少的辅助空间来
解决方案:定义两个辅助空间,一个空间为front控制队首,一个空间为rear控制队尾,这样使得入队和出队的时间复杂度都变成了O(1)。但现在出现了个问题,如果这是一个循环顺序队列呢?
问题二:
如果该队列是循环顺序队列,应该如何判空和判满呢?
判空:front == rear;
判满:(rear + 1) % max == front
4.2 数据结构的选择和概要设计
数据结构的选择:①逻辑结构:队列
②存储结构:数组
概要设计:
通过循环和队列的反复应用来达到目的
4.3 详细设计
对第一行的“1”,我们选择直接输出
对2~8行的数,我们选择在每一行前都加一个“0”,这样使得下一行的每一个数都能由上一行左右相对的数字之和而取到,例如:
0 1 1
0 1 2 1
再看结尾,我们发现每一行的结尾都以1而结束,所以我们默认在每一行结尾出queue.push(1),然后cout<<endl;进行换行。
五、源代码