资源简介
本程序通过出栈入栈的操作实现了商品货架的管理。自己建立数据文件的方式对供货信息进行如下管理:①查询②修改③排序。商店货架以栈的形式摆放商品,生产日期越近的越靠近栈底,出栈是从栈顶取货,一天营业结束,如果货架不满,则需上货,如果直接将商品摆放到货架上,则会使生产日期越近的越靠近栈顶.这就需要倒货架,仍使生产日期越近的越靠近栈底。写出货物进栈、出栈算法
代码片段和文件信息
#include
#include
#define stack_init_size 100
#define stncrement 100
#define selemtype int
typedef struct
{
selemtype *top;
//该指针始终指向栈顶//
selemtype *base;
//该指针始终指向栈底//
int stacdsize;
// 栈当前的长度//
int length;//元素个数
}node;
//栈的初始化
int initstack(node &s)
// s需要用引用 //
{
s.top=s.base=(selemtype*)malloc(stack_init_size*sizeof(selemtype));
//申请一块大小为stack_init_size的空间,同时把该空间的地址赋值给s.top和s.base//
s.stacdsize=stack_init_size;
//栈当前的长度大小为stack_init_size//
s.length=0;
return 0;
}
//元素入栈
int push(node &sselemtype e)
{
if(s.top-s.base>=s.stacdsize)
//判断栈是否已满//
{
s.base=(selemtype*)realloc(s.base(s.stacdsize + stncrement)*sizeof(selemtype));
//如果栈已满,申请一块动态空间(相当于在原有的空间上增加一块大小为stncrement的空间,同时把新申请的空间的地址赋值给s.base)//
s.top=s.base+s.stacdsize ;
//s.top始终指向要入栈的元素的位置//
s.stacdsize+=stncrement;
//栈的当前长度同时增加//
}
*s.top++=e;
//首先把e的值赋给s.top,然后把s.top指向即将要来到的元素的位置//
s.length++;
return 0;
}
//出栈
int pop(node &sselemtype &e)
{
if(s.top==s.base)
//判断栈是否为空//
return 1;
e=*--s.top;
//首先使s.top向下移动一位,然后把s.top指向的值赋给e//
s.length--;
return 0;
}
//
void ADD(node &sselemtype &e)//倒货函数
{
int o[10];
int m=0;
if(s.top==s.base)
{
push(se);
}
else
{
for(int i=0;i {
if (e>=*(s.top-1))
{
pop(so[i]);
m++;
//s.length++;
}
}
//s.length=s.length-m;
push(se);
for(m;m>0;m--)
{
push(so[m-1]);
}
}
}
void print(node &s)//栈的输出函数
{
for(int i=0;i {
printf(“%d “*s.base);
s.base++;
}
s.base=s.base-s.length;
}
//主函数
void main()
{
int e;
printf(“模块一:商品入栈\n“);//模块一
printf(“请输入需要上架的商品种类数(<10):\n“);
scanf(“%d“&e);
node s[10];//10个栈
for(int x=0;x {
initstack(s[x]);//建立e个栈
}
i
评论
共有 条评论