- 36
- 0
- 约9.19千字
- 约 11页
- 2021-12-10 发布于上海
- 举报
洛 阳 理 工 学 院 课 程 设 计 报 告
【问题描述】
商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期
最近。上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
【基本要求】
针对一种特定商品,实现上述管理过程。
【测试数据】
小四宋体,行间距单倍行距,每段缩进两个字符
【算法思想】
第一:先定义数据日期的结构体——里面包括年、月、日
第二:写进栈、出栈函数
第三:写倒货函数
基本思想就是借助三个一维数组分别装载年 (a[]) 、月(b[]) 、日(c[]) ,
然后出栈并将所有元素放到这三个数组中,一个生产日期的年、月、日数组的下
标必须必须相同否则就乱了。再将数组中元素按生产日期较近进行排序,最后一
步将数组中的元素压到原来的栈中即可。
第四:函数输出,输出只是单纯的输出,不要求出战,故需要另写一个函数
第五:主函数因为可以循环使用,故用 switch —case 语句即可实现
【模块划分】
进栈、出栈、倒货、输出和主函数
【数据结构】
栈:程序中使用的是链栈,链栈的好处是只要还有存储空间就会存储,结构
体的 next 域指向下一个数据域,它的存储空间是随意的,可以连续,也可以不连
续。
数组:数组的存储方式是连续的物理空间,下标即为存储位置,可以高效的
运行
【测试情况】
小四宋体,行间距单倍行距
重点内容,每个功能抓图并且给予文字解释
【心得】
通过此次的课程设计让我深刻的了解到了数据结构是很难的,刚开始的写的
1
洛 阳 理 工 学 院 课 程 设 计 报 告
时候,结构体定义就出错了,以至于后边的函数功能都出错了,就连输入都有错
误,我刚开始以为是我的函数写错了呐!把进栈、出栈函数照着教材上的又重新
写了一会,结果发现还是不行,后来请教班里学的比较还好的同学,发现我结构
体定义的有问题,我年份用的是 int 类型,月、日用的是 char 类型, char 类型
只能接收一个字符,第二个就不能接收不了,所我的输入总有问题,后来我改成
int 类型的就没有这种情况了。后来又想边比较边压栈,弄了一段时间,后来由
于时间关系就没实现,就借助数组实现的。也是一种遗憾。以后有时间写出来。
此次的课程设计,让我对栈有了更加深入的理解,因为结构体出错时写了好
几遍,同时也感谢帮助我的老师和同学们,谢谢给我的帮助,才是顺利的完成此
次课程设计。
【源程序】
5 号, Times New Roman 字体
#include stdio.h
#include malloc.h
#define FALSE 0
#define TRUE 1
#define SIZE 3
#define NUM 100
// 日期结构体定义
typedef struct Date
{
int year;
int month;
int day;
} Date,*DATE;
//链栈结构体定义
typedef struct Node
{
Date date;
struct Node *next;
}linkstacknode,*linkstack;
2
洛 阳 理 工 学 院 课 程 设 计 报 告
//链栈初始化
void initstack(linkstack *S)
{
*S=(linkstacknode*)malloc(sizeof(linkstacknode));
(*S)-next=NULL;
}
//链栈进栈
原创力文档

文档评论(0)