gg的超市

 此题目是本人在数据结构课程设计中的一个小问题,其中的部分地方书写很不规范,但大概思路应该正确。此文章是本人第一次在本网站上发布的,如有错误或者改正,欢迎各位在评论区留言,谢谢。同时请各位同学理性使用,本代码只是提供一个简单的思路,自己敲出来的代码才能被自己吸收。

题目描述:

gg有一个超市,超市里有2个员工,分别是送货的小a、摆货的小b,超市有大厅和仓库。大厅里有个货架,货架只有一个口,可以放商品或者取商品;仓库里有条传送带,会把放入前门的货品运送到后门。小a的工作是每天早上把商品一个一个的送到仓库前门;小b的工作是每天早上把商品从仓库后门一个一个的取出放到大厅的货架上,一般来说,都会把新取的货品放到货架最底层,可是小b很懒,每次都把商品放到最前面;超市每天都有顾客来购物。gg偶尔会在一天的营业结束后来超市抽查货品,如果发现货架上的第一个商品是三天前进货的,gg会发怒,并把货架清空。

输入格式:

在第一行给出n(n<=100),代表总天数,接下来n行为每天发生的事情。

每行第一个数字代表第几天,题目保证天数依次有序

每行第二个数字代表小a今天得进货数量,范围0~1000

每行第三个数字代表小b今天往货架上放货得数量,范围0~1000

每行第四个数字代表顾客今天买走了多少商品,范围0~1000

每行第五个数字代表gg今天来了没有,1代表来了,0代表没来

数字间以空格分隔

数据不保证小b得取货量<=仓库剩余量,货架剩余量<=估计购买量

输出格式:

如果某天gg抽查时发怒了,则输出天数后加一串字符串"Wang!Wang!!Wang!!!"。

例:gg在第三天抽查时发怒了,则输出“3 Wang!Wang!!Wang!!!”.

输入样例:

在这里给出一组输入。例如:

5
1 10 4 3 0
2 10 4 4 0
3 0 5 5 0
4 0 1 1 1
5 0 0 0 0

输出样例:

在这里给出相应的输出。例如:

4 Wang!Wang!!Wang!!!

代码: 

#include
#include
#include
#define maxsize 10000000
struct Node{int capacity;int *data;int top;
};
struct Node1{int size;int front,rear;int *cont;
};
typedef struct  Node1* queue;
typedef struct Node* stack;
stack creatstack()
{stack s=(stack)malloc(sizeof(struct Node));s->top=0;s->data=(int*)malloc(sizeof(int)*(maxsize));return s;
}
queue creatqueue()
{queue l=(queue)malloc(sizeof(struct Node1));l->size=0;l->front=0;l->rear=0;l->cont=(int*)malloc(sizeof(int)*maxsize);return l;
}
bool empty(stack s)
{if(s->top==0)return true;elsereturn false;
}
bool emptyqueue(queue s)
{if((s->front+1)%s->size==s->rear)return true;elsereturn false;
}
bool fullstack(stack s)
{if(s->top==s->capacity)return true;elsereturn false;
}
bool fullqueue(queue s)
{if((s->rear+1)%s->size==s->front)return true;elsereturn false;
}
void pushstack(stack s)
{if(empty(s)==false){s->top--;}
}
int pushqueue(queue s)
{if(emptyqueue(s)==false){int y=s->cont[s->front];s->front=(s->front+1)%s->size;return y;}elsereturn;
}
stack popstack(stack s, int x)
{if(fullstack(s)==false){s->top++;s->data[s->top]=x;return s;}
}
queue popqueue(queue s,int x)
{if(fullqueue(s)==false){s->cont[s->rear]=x;s->rear=(s->rear+1)%s->size;return s;}elsereturn;
}
void clearstack(stack s)
{s->top=0;
}
int checkstack(stack s,int x)
{if(empty(s)==true){return -1;}else if(empty(s)==false){int a=0;int top=0;top=s->top;top=top--;a=s->data[top];if(a<=x){return 1;}else{return -1;}}
}
void trvalstack(stack s)
{int x=s->top;while(x>0)printf("sttrva %d ",s->data[x--]);printf("\n");
}
void trvalqueue(queue s)
{int x=s->front;while(xrear){printf("qu%d ",s->cont[x]);x=(x+1)%s->size;}printf("\n");
}
int main()
{int n;int i,j,q;int sum=0,su=0;int day,en,pu,buy,come;stack s=creatstack();queue l=creatqueue();scanf("%d",&n);s->capacity=maxsize;l->size=maxsize;for(i=1;i<=n;i++){scanf("%d%d%d%d%d",&day,&en,&pu,&buy,&come);for(j=0;j


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部