8、队应用实验.docVIP

  • 1
  • 0
  • 约1.7万字
  • 约 5页
  • 2017-06-13 发布于河南
  • 举报
8、队应用实验

实验八 队列的应用 一、实验目的 掌握用VC工具上机调试队列的存储方式和基本操作。 掌握队列的顺序存储结构; 掌握队列先进先出运算原则在解决实际问题中的应用。 二、实验学时 2学时 三、实验类型 验证型 四、实验内容 利用循环顺序队列打印杨辉三角形。打印的杨辉三角形如下所示: 1 1???1 1?? 2?? 1 1?? 3?? 3?? 1 1?? 4?? 6?? 4?? 1 1?? 5?? 10? 10? 5?? 1 1?? 6?? 15? 20? 15? 6?? 1 …… 五、实验原理 数值转换原理 栈是一种受限的线性表,由于规定了栈的入栈与出栈只能在一端进行,故而产生了后进先出,先进后出的结果,而数值转换可采用数学方法辗转相除的方法解决,但首先产生的数值却是个位数值,最后产生的是最先用到的,这种结构符合后进先出的特点,因而可设一个栈存储依次产生的各个数值进行模拟,当除数为零时输出栈中元素即可。 2、栈的基本算法 (1)SeqStackInitiate(Q); 初始化顺序栈S。 (2)SeqStackEmpty(Q); 判断顺序栈S非空否操作。 (3)EnSeqStack (Q,x); 顺序栈S入栈操作,在顺序栈S的栈顶插入数据元素x。 (4)DeSeqStack (Q,d); 顺序栈S出栈操作,把顺序栈S的栈顶元素删除并由参数d带回。 (5) conversion(); 数值转换算法。 3、模块层次 要求画出数值转换问题的模块层次图。如图所示 图图9 数值转换程序模块图 4、关键算法NS图 六、实验步骤及要求 用VC语言编程实现建立一个队列Q,借助于栈队列Q进行打印杨辉三角。 队列Q初始化; 输入杨辉三角规模的数值n; 输出经过程序运行后的规模n的杨辉三角; 程序完成。 七、运行结果 图10 数值转换程序运行图 八、思考问题 结合实验过程,回答下列问题: 数值转换问题能否使用数组解决? 使用数组与栈有何区别? 数组与栈来解决数值转换问题那种选择为最佳选择? 九、实验报告要求 根据对栈的先进后出特点的理解,如何实现栈的基本操作; 何时选用栈去解决实际问题; 采用栈来解决问题的特点; 调试程序过程中遇到的问题及解决方案; 本次实验的结论与体会。 程序附录: #include stdio.h #define Maxsize 100 void fun() { int a[Maxsize][Maxsize]={0},i,j,n; a[0][1]=0;a[0][0]=1; printf(input n:\n); scanf(%d,n); for(i=1;i=n;i++) { for(j=1;j=n;j++) a[i][j]=a[i-1][j]+a[i-1][j-1]; } for(i=0;i=n;i++) { for(a[0][6]=1;a[0][6]41-2*i;a[0][6]++) putchar( ); a[0][6]=0; for(j=0;j=n;j++) if(a[i][j]!=0) printf(%4d,a[i][j]); printf(\n); } } main() { fun(); }

文档评论(0)

1亿VIP精品文档

相关文档