西安郵電學院
数据结构课内实验报告
题 目: 商品货架管理
院系名称: 计算机学院
专业名称: 软件工程专业
班 级:
学生姓名:
学号(8位):
需求分析
商品货架管理:把商品货架看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近,上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。
输入的形式和输入值的范围:输入商品名称和日期如:aa输出的形式:商品名称和生产日期 如:bb程序所能达到的功能:商品上货时,需要倒货价,以保证生产日期较近的商品在较下的位置。
(4)测试数据:
(5) 输入:a bb cc 输出:cc bb a概要设计
数据类型的定义:
struct information /*定义商品信息*/
{
char name[10]; /*名称*/
long date; /*生产日期*/
};
typedef struct/*定义顺序栈*/
{
struct information sp[size];
int top;
}seqstack;
int push(seqstack *s1):
进栈s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输输后输再输出结果;
流程图:
请输入商品的名称和日期
请输入商品的名称和日期
开始
top= 0
top
输入商品名称和日期,较近的 先输
top++
结束
Y
No
(2)int cmp(seqstack *s1,seqstack *s2,int TOP)
插入新商品,输入新商品名字和日期,
0808 0707
0808
0707
s1s2 s1 0707
s1
s2
s1
0707
0808
0909
0707
0808
2)旧0707,0808,新0606,因为0606-0707>0,直接将新商品进入s1栈;
0606 0707
0606
0707
0808
s2—
s2—>top= -1
s1
s1
0606
0606
旧0606,0909.新0707,
0606s2
0606
s2
0606
0909
s1
s1
0606 0707
0606
0707
0909
s1
0707
0707
流程图:
请输入新商品的名称和日期
请输入新商品的名称和日期
开始
s1->top!=-1&&new.date-s1->sp[s1->top].date>0
S1栈顶元素出S1栈
入S2栈
,
S1->top++
结束
Y
No
S2->top++ S1->top--
入S1栈
S2栈不为空
出S2栈,入S1栈
Y
N
void pop(seqstack *s1,int TOP)
输出插入新商品后的货架商品顺序。
流程图:
开始
开始
S1->top>0
输出S1栈顶的商品
S1->top--
结束
Y
No
三.详细设计
实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数和过程的调用关系图。
struct information /*定义商品信息*/
{
char name[10]; /*名称*/
long date; /*生产日期*/
};
typedef struct/*定义顺序栈*/
{
struct information sp[size];
int top;
}seqstack;
int push(seqstack *s1)
{
初始化两个栈中元素商品信息,一个用于出栈显示,另一个作为原始站参与以下各个操作输出原来货架上的商品的商品的生产日期是: 原来货架上的商品的栈底商品的生产日期是设置记录栈顶元素top =1; 显示原始货架上的商品信息
int i=0,t;
//s1栈从栈顶top=0开始,按商品日期从近到晚输入,如先输再输入06