/*
商品货架,货架顶商品的生产日期最早,货架底商品的生产日期最近。
上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
设计2个算法实现“倒货架”的过程。
要求:1算法1使用栈或队列实现。
*/
在这里插入代码片#define Maxsize 100#define STACKINCREMENT 10typedef struct shelf_stack {int *base;int *top;int stacksize;//堆栈结构}Sqstack,*Stack;void init_stack(Stack s); //创建一个堆栈void pop_stack (Stack s,int *e); //删除栈顶元素,将栈顶元素用e返回void push_stack(Stack s,int e); //将元素e入栈void transfer(Sqstack s,Sqstack t,int k); //倒货架函数```#include<stdio.h>void insert_sort(int A[],int N)//插入排序,按从大到小排序{int temp,p,i;for(p=1;p<N;p++){temp=A[p];for(i=p;A[i-1]<temp&&i>0;i--)A[i]=A[i-1];A[i]=temp;}}int main(){printf("***************Administrion Of Goods Shelf System***************\n");int k,i,length;i=0;printf("Please input the information of present goods:\n");while(k!=-1){//输入原有的货物直到-1结束scanf("%d",&k);if(k>0) {A[i]=k;i++;}}printf("Please input the information of new goods:\n");scanf("%d",&k); //输入新货物A[i]=k;length=i+1;printf("****************************renewing****************************\n"); insert_sort(A,length);{for(i=length-1;i>=0;i--) //从上到下输出排序好的货物{printf("%d\n",A[i]);}printf("*****************************over*****************************\n"); while(1);return 0;}}
分析过程
从上到下输入货物,-1为结束输入。再输入新货物的参数。
倒货架函数三个输入参数,堆栈S,堆栈T,放入的新货物。将S货架导入T中,直到货架日期小于新货架。将小于的那一个i货品先弹出 。将新货品入栈。小于新货品的物品入栈。将s的货继续倒入t中。t中的货倒入s中。再将t中的货物按生产日期从远到近输出。