




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安郵電學院数据结构课内实验报告题 目: 商品货架管理院系名称: 计算机学院 专业名称: 软件工程专业班 级: 学生姓名: 学号(8位): 一. 需求分析商品货架管理:把商品货架看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近,上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。(1) 输入的形式和输入值的范围:输入商品名称和日期如:aa (2) 输出的形式:商品名称和生产日期 如:bb (3) 程序所能达到的功能:商品上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。(4)测试数据:(5) 输入:aa bb cc 输出:cc bb aa2. 概要设计数据类型的定义:
2、struct information /*定义商品信息*/ char name10; /*名称*/ long date; /*生产日期*/ ; typedef struct/*定义顺序栈*/ struct information spsize; int top; seqstack;(1) int push(seqstack *s1): 进栈s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输入再输入然后输入,再输出结果;流程图:请输入商品的名称和日期开始top= 0top0时,把s1栈顶的内容出栈,并进栈道s2,依次进行比较,比较结束后,把新产品的数据进栈s1,然后把s2的数据依次从栈顶
3、进展到s2,。如图: 新商品0909 s1s2 s1 0707 0808 0909 0707 0808 2)旧0707,0808,新0606,因为0606-07070,直接将新商品进入s1栈; 0606 0707 0808 s2top= -1s1 06063) 旧0606,0909.新0707, 0606s2 0606 0909 s1 0606 0707 0909s1 0707 流程图:请输入新商品的名称和日期开始s1-top!=-1&new.date-s1-sps1-top.date0S1栈顶元素出S1栈入S2栈,S1-top+结束YNoS2-top+ S1-top-入S1栈S2栈不为空出S
4、2栈,入S1栈YN(3) void pop(seqstack *s1,int TOP) 输出插入新商品后的货架商品顺序。 流程图:开始S1-top0输出S1栈顶的商品S1-top-结束YNo 三详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。struct information /*定义商品信息*/ char name10; /*名称*/ long date; /*生产日期*/;typedef struct/*定义
5、顺序栈*/ struct information spsize; int top;seqstack;int push(seqstack *s1)初始化两个栈中元素商品信息,一个用于出栈显示,另一个作为原始站参与以下各个操作输出原来货架上的商品的商品的生产日期是: 原来货架上的商品的栈底商品的生产日期是设置记录栈顶元素top =1; 显示原始货架上的商品信息 int i=0,t;/s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输入,再输入 for(s1-top=0;s1-toptop+) printf(Please input the %ds name and the date of
6、production:,s1-top+1); scanf(%s %d,,&s1-sps1-top.date); printf(n);t=-s1-top;printf(Begin enter the new goods:n);printf(Name of goods | Date of production :n); for(s1-top=t;s1-top=0;s1-top-) printf(%9s,); printf( %8dn,s1-sps1-top.date); return(t);/返回s1当前栈顶 int cmp(seqs
7、tack *s1,seqstack *s2,int TOP) 插入新商品,输入新商品名字和日期,比较新旧商品的生产日期,当s1不为空栈和新商品的日期大于s1栈顶的日期如:-0时,把s1栈顶的内容出栈,并进栈道s2,依次进行比较,比较结束后,把新产品的数据进栈s1,然后把s2的数据依次从栈顶进展到s2 struct information new; s1-top=TOP; s2-top=-1;/输入新商品名字和日期 printf(Please input the new goods name:); scanf(%s,); printf(please input the date
8、of production:); scanf(%d,&new.date);printf(n);/当s1不为空栈和新商品的日期大于s1栈顶的日期如:-0时 while(s1-top!=-1&new.date-s1-sps1-top.date0) /*比较新旧商品的生产日期*/ s2-top+; printf(s1-s2:(%s %ld) popn,,s1-sps1-top.date); strcpy(,); s2-sps2-top.date=s1-sps1-top.date; s1-top-; s1-
9、top+;/*将新商品插入货架*/ strcpy(,);printf(new-s1:(%s %ld) popn,,new.date); s1-sps1-top.date=new.date; for(;s2-top-1;s2-top-) s1-top+; strcpy(,);printf(s2-s1:(%s %ld) popn,,s2-sps2-top.date); s1-sps1-top.date=s2-sps2-top.date; p
10、rintf(n);return(s1-top);void pop(seqstack *s1,int TOP)/*输出插入新商品后的货架商品顺序*/ printf(Update the shelves of commodity goods after order :n); printf(Name of goods | Date of production :n); for(s1-top=TOP;s1-top=0;s1-top-) printf(%9s,); printf( %8dn,s1-sps1-top.date); printf(The over!n);四时间
11、复杂度分析push的时间复杂度为:O(s1-top*2);cmp的时间复杂度为:O(s1-top+s2-top+1);pop的时间复杂度为:O(s1-top+1);五测试数据及运行结果 正确的输入: 正确运行结果 错误的输入错误运行结果六调试情况,设计技巧及体会1 对自己的设计进行评价,指出合理和不足之处,提出改进方案; 我的商品货架管理程序架构比较简单,没有循环利用,第一次信息输入进栈后只能按商品日期从远到近输入,如果日期输入没按上述顺序,则运行结果会出错。2 对设计及调试过程的心得体会。通过这次商品货架管理的上机实习,我对于栈有了更多的认识,对栈的运用更加的熟练,对于栈的具体进出有了很深入
12、的认识,尤其在输出栈的具体的进出操作过程中,在输出形式上费了很大的功夫,还有在插入新商品时,比较商品日期,开始的时候没有考虑全面,只考虑到新商品日期比所有的旧商品日期近,最后经过完善,又增加了比所有的商品日期早,和新商品日期在旧商品中间,最后才得到比较满意的结果。七附录:源代码,包括注释#include#include#define size 4struct information /*定义商品信息*/ char name10; /*名称*/ long date; /*生产日期*/;typedef struct/*定义顺序栈*/ struct information spsize; int t
13、op;seqstack;int push(seqstack *s1) int i=0,t;/s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输入,再输入 for(s1-top=0;s1-toptop+) printf(Please input the %ds name and the date of production:,s1-top+1); scanf(%s %d,,&s1-sps1-top.date); printf(n);t=-s1-top;printf(Begin enter the new goods:n);printf(Name of go
14、ods | Date of production :n); for(s1-top=t;s1-top=0;s1-top-) printf(%9s,); printf( %8dn,s1-sps1-top.date); return(t);/返回s1当前栈顶int cmp(seqstack *s1,seqstack *s2,int TOP) struct information new; s1-top=TOP; s2-top=-1;/输入新商品名字和日期 printf(Please input the new goods name:); scanf(%s,new.na
15、me); printf(please input the date of production:); scanf(%d,&new.date);printf(n);/当s1不为空栈和新商品的日期大于s1栈顶的日期如:-0时 while(s1-top!=-1&new.date-s1-sps1-top.date0) /*比较新旧商品的生产日期*/ s2-top+; printf(s1-s2:(%s %ld) popn,,s1-sps1-top.date); strcpy(,); s2-sps2-top.d
16、ate=s1-sps1-top.date; s1-top-; s1-top+;/*将新商品插入货架*/ strcpy(,);printf(new-s1:(%s %ld) popn,,new.date); s1-sps1-top.date=new.date; for(;s2-top-1;s2-top-) s1-top+; strcpy(,);printf(s2-s1:(%s %ld) popn,,s2-sps2-top.date); s1-sps1-top.date=s2-sps2-top.date; printf(n); return(s1-top);void pop(seqstack *s1,int TOP)/*输出插入新商品后的货架商品顺序*/ printf(Update the shelves of commodity goods a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菏泽市重点中学2025年高三第二次调研测试物理试题理试题含解析
- 河南焦作市沁阳市2025届初三年级第一次质量调研生物试题试卷含解析
- 浙江机电职业技术学院《特效化妆工艺》2023-2024学年第一学期期末试卷
- 红色简约商务风季度绩效考核报告
- 电机在医疗放射设备中的应用考核试卷
- 森林公园生态旅游市场品牌建设与竞争力提升考核试卷
- 煤气化中的智能化制造技术发展前景考核试卷
- 工程质量事故分析总复习考核试卷
- 液压技术在物料搬运设备中的重要性考核试卷
- 2025届上海市长宁区高三二模考试数学试卷
- 施工风险技术风险
- (高清版)JGT 225-2020 预应力混凝土用金属波纹管
- 酸枣仁汤的临床应用研究
- 河北省廊坊市安次区2023-2024学年八年级下学期4月期中物理试题
- 前庭神经炎病人的护理
- 招标代理服务 投标方案(技术方案)
- 寺院宣传法治知识讲座
- 《多源图像融合技术及其遥感应用-图像融合技术》课件
- 直播带岗方案
- 网络安全前沿技术与未来趋势研究
- 辽宁省沈阳市铁西区2024届英语三年级第二学期期中调研试题含答案
评论
0/150
提交评论