| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
为什么我这个入库后再出库会是一堆数字,可以帮我看看吗 
- #include<stdio.h>
 
 - #include<stdlib.h>
 
 - #define stack_init_size 100
 
 - #define stackincrement 10
 
 - #define OK 1 
 
 - #define ERROR 0
 
 - typedef int status;
 
 - typedef struct            //声明结构体Production用于表示生产日期
 
 - {   int year;
 
 -     int month;
 
 -     int day;
 
 - }production;
 
 - typedef struct
 
 - {    int  number;                  //商品编号
 
 -          production date;           //商品生产日期
 
 - }selemtype;
 
 - typedef struct{
 
 -         selemtype *base;//栈底指针 
 
 -         selemtype *top;//栈顶指针 
 
 -         int stacksize;
 
 - }sqstack;
 
 - void initstack(sqstack &s)
 
 - {
 
 -         s.base=(selemtype*)malloc(stack_init_size*sizeof(selemtype));
 
 -         s.top=s.base;
 
 -         s.stacksize=stack_init_size;
 
 - }
 
 - void push(sqstack &s,selemtype e)//入栈 
 
 - {
 
 -         if(s.top-s.base>=s.stacksize){
 
 -                 s.base=(selemtype*)realloc(s.base,(s.stacksize+stack_init_size)*sizeof(selemtype));
 
 -                 if(!s.base)  
 
 -                        printf("error");
 
 -                            s.top=s.base+s.stacksize;
 
 -                            s.stacksize+=stack_init_size;
 
 -         }
 
 -         *s.top=e;
 
 -         s.top++;
 
 - }
 
 - void pop(sqstack &s,selemtype k)//出栈 
 
 - {
 
 -         selemtype *e=s.top-1;
 
 -         int i=0;
 
 -         if(s.base==s.top){
 
 -                 printf("栈为空"); 
 
 -         }
 
 -         k=*e;
 
 -         s.top--;
 
 - }
 
 - status gettop(sqstack s,selemtype k)//取栈顶元素 
 
 - {
 
 -         selemtype e;
 
 -         if(s.top!=s.base){
 
 -       k=*(s.top-1);
 
 -           return OK;
 
 -         }
 
 -         return ERROR;
 
 - }
 
 - void print(sqstack &s)//输出 
 
 - {
 
 -         selemtype *e=s.base;
 
 -         int i=0;
 
 -         while(i<(s.top-s.base))
 
 -         {
 
 -                 printf("%d ",*e);
 
 -                 i++;
 
 -                 e++;
 
 -         }
 
 - }
 
 - status judge(sqstack &s,selemtype e)//栈顶元素大于输入返回1 
 
 - {
 
 -         selemtype k;
 
 -         gettop(s,k);
 
 -         if(k.date.year>e.date.year){
 
 -                 return OK;
 
 -         }
 
 -         else if(k.date.year==e.date.year){
 
 -                 if(k.date.month>e.date.month){
 
 -                         return OK;}
 
 -                 else if(k.date.month==e.date.month){
 
 -                         if(k.date.day>e.date.day){
 
 -                                 return OK;
 
 -                         }
 
 -                         else if(k.date.day==e.date.day){
 
 -                                 return OK;
 
 -                         }
 
 -                 }
 
 -                 }
 
 -         else {
 
 -                 return ERROR;
 
 -         }
 
 - }
 
 - void Lineup()
 
 - {
 
 -         int i,j=1,t;
 
 -         sqstack s,temp;
 
 -         initstack(s);
 
 -         initstack(temp);
 
 -         while(j!=4)
 
 -         {
 
 -                 printf("1.入库  2.出库  3.查看货物   4.退出\n");
 
 -                 scanf("%d",&j);
 
 -                 switch(j){
 
 -                         case 1:{
 
 -                                         selemtype e,k;
 
 -                                         printf("请输入商品编号及生产日期:\n");
 
 -                                    scanf("%d %d %d %d",&e.number,&e.date.year,&e.date.month,&e.date.day);
 
 -                                         if(s.top==s.base)
 
 -                                         {
 
 -                                                 push(s,e);
 
 -                                         }
 
 -                                         else{
 
 -                                                         gettop(s,k);
 
 -                                                         t=0;
 
 -                                                         while(!t){
 
 -                                                                 pop(s,k);
 
 -                                                                 push(temp,k);
 
 -                                                                 t=judge(s,e);
 
 -                                                         }
 
 -                                                         push(s,e);
 
 -                                                         while(temp.base!=temp.top)
 
 -                                                         {
 
 -                                                                 pop(temp,k);
 
 -                                                                 push(s,k);
 
 -                                                         }
 
 -                                                 }
 
 -                                                 break;}
 
 -                         case 2: {
 
 -                                          selemtype w;
 
 -                                      pop(s,w);
 
 -                                          printf("该商品编号为%d,生产日期为%d %d %d",w.number,w.date.year,w.date.month,w.date.day);
 
 -                                          break;}
 
 -                     case 3:{
 
 -                                         print(s);
 
 -                                         break;}
 
 -                 }
 
 -                 }
 
 -         }
 
 - int main()
 
 - {
 
 -         Lineup();
 
 -     return 0;
 
 - }
 
  复制代码 |   
 
 
 
 |