• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: 栈的操作  

资源简介

本程序通过出栈入栈的操作实现了商品货架的管理。自己建立数据文件的方式对供货信息进行如下管理:①查询②修改③排序。商店货架以栈的形式摆放商品,生产日期越近的越靠近栈底,出栈是从栈顶取货,一天营业结束,如果货架不满,则需上货,如果直接将商品摆放到货架上,则会使生产日期越近的越靠近栈顶.这就需要倒货架,仍使生产日期越近的越靠近栈底。写出货物进栈、出栈算法

资源截图

代码片段和文件信息

#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

评论

共有 条评论

相关资源