1 / 17 数据结构实验报告2 / 17 实验一杨辉三角形 (Pascal ’s triangle) 一、 需求分析1. 输入的形式和输入值的范围本程序中,需输入的杨辉三角级数level 为正整数,由键盘输入,以回车结束2. 输出的形式通过屏幕输出杨辉三角3. 程序所能达到的功能用户从键盘输入需要的杨辉三角级数,从屏幕输出杨辉三角4. 测试数据输入: 5 输出:1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 二、 概要设计以链队列结构实现该实验1. 抽象数据类型定义ADT Queue { 数据对象: D = { ai | ai∈ElemSet , i = 1,2,⋯,n,n≥0 } 数据关系: R1={
| ai-1 , ai∈D, i=2,⋯,n} 约定其中 ai 端为队列头, an 端为队列尾基本操作:InitQueue ( &Q ) 操作结果:构造一个空队列Q DestroyQueue ( &Q ) 初始条件:队列Q 已存在3 / 17 操作结果:队列Q 被销毁,不再存在ClearQueue ( &Q ) 初始条件:队列Q 已存在操作结果:将 Q 清为空队列QueueEmpty ( Q ) 初始条件:队列Q 已存在操作结果:若 Q 为空队列,则返回TRUE,否则 FALSE QueueLength ( Q ) 初始条件:队列Q 已存在操作结果:返回Q 的元素个数,即队列长度GetHead ( Q , &e ) 初始条件: Q 为非空队列操作结果:用 e 返回 Q 的队头元素EnQueue ( &Q , e ) 初始条件:队列Q 已存在操作结果:插入元素e 为 Q 的新队尾元素DeQueue ( &Q , &e ) 初始条件: Q 为非空队列操作结果:删除Q 的队头元素,并用e 返回其值QueueTraverse ( Q , visit( ) ) 初始条件: Q 已存在且非空操作结果: 从队头到队尾, 依次对 Q 的每个数据元素调用函数 visit( )。一旦 visit( )失败,则操作失败。}ADT Queue 2. 主程序流程void main ( ) { 初始化;输入数据;执行功能;显示结果;} 3. 各程序模块间调用关系主程序↓各功能模块三、 详细设计4 / 17 1.抽象数据类型定义定义数据类型 QNode { 整形数据 data; 指针变量 *next; }QNode,*QueuePtr; typedef struct { 设定队头指针设定队尾指针}LinkQueue; 2. 各功能模块算法(1)//构造空队列 Q int InitQueue { 获取数据结构类型QNode;设定头结点,头尾指针指向头结点;} (2)//插入 e 为 Q的队尾元素int EnQueue { 分配动态内存空间;确认分配成功;队尾元素赋值;定义队尾指针...