问题描述
商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越近的越靠近栈底。
基本要求
设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈底。
#include<iostream>
#define MAXSIZE 100
using namespace std;
struct SqStack //栈
{
int *base;
int *top;
int stacksize;
};
struct SqQueue //队列
{
int *qbase;
int front;
int rear;
};
void InitStack(SqStack &s)//顺序栈初始化
{
s.base = new int[MAXSIZE];
if (!s.base) exit(OVERFLOW);
s.top = s.base;
s.stacksize = MAXSIZE;
}
void Push(SqStack&s, int g)//入栈
{
if (s.top - s.base == s.stacksize) exit(OVERFLOW);
*s.top++ = g;//元素压入栈顶,栈顶指针加一
}
int Pop(SqStack&s)//出货
{
int g;
if (s.top == s.base) exit(OVERFLOW);
g = *--s.top;//栈顶指针减一,将栈顶元素付给g
return g;
}
int StackLength(SqStack&s)//栈长度
{
int *p;
p = s.base;
int i;
for (i = 0; p