倒货架算法
‘壹’ 请大家帮忙编 一个数据结构的算法 用c++ 谢啦 急用
你自己没有先试着写吗?
1,让要上的货按先后进入队列
2,把原始栈中的货全部出栈,按顺序依次进入临时栈.
3,按出队顺序,把货压入临时栈中
4,把临时栈中的货出栈,按顺序压入原始栈
‘贰’ c语言数据结构题,商品货架管理
http://apps.hi..com/share/detail/19838161
商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。 上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。
#include<stdio.h>
#include<string.h>
#define size 4
struct data/*定义商品信息*/
{
char name[6]; /*商品名称*/
long int date; /*商品生产日期*/
};
typedef struct/*定义顺序栈*/
{
struct data sp[size];
int top;
}seqstack;
int push1(seqstack *s1)
{
int i=0;
for(s1->top=0;s1->top<size-1;s1->top++)
{
printf("请输入第%d件商品名称:",s1->top+1);
scanf("%s",s1->sp[s1->top].name);
printf("请输入生产日期:");
scanf("%d",&s1->sp[s1->top].date);
printf("\n");
}
return(--s1->top);
}
int cmp(seqstack *s1,seqstack *s2,int TOP)
{
struct data new;
s1->top=TOP;
s2->top=-1;
printf("请输入新商品名称:");
scanf("%s",new.name);
printf("请输入生产日期:");
scanf("%d",&new.date);
while(s1->top!=-1&&new.date-s1->sp[s1->top].date>0)
/*比较新旧商品的生产日期*/
{
s2->top++;
strcpy(s2->sp[s2->top].name,s1->sp[s1->top].name);
s2->sp[s2->top].date=s1->sp[s1->top].date;
s1->top--;
}
s1->top++;/*将新商品插入货架*/
strcpy(s1->sp[s1->top].name,new.name);
s1->sp[s1->top].date=new.date;
for(;s2->top>-1;s2->top--)
{
s1->top++;
strcpy(s1->sp[s1->top].name,s2->sp[s2->top].name);
s1->sp[s1->top].date=s2->sp[s2->top].date;
}
return(s1->top);
}
void pop(seqstack *s1,int TOP)/*输出插入新商品后的货架商品顺序*/
{
printf("更新商品后的货架商品顺序为:\n");
printf("商品名称 生产日期:\n");
for(s1->top=TOP;s1->top>=0;s1->top--)
{
printf(" %s ",s1->sp[s1->top].name);
printf("%d\n",s1->sp[s1->top].date);
}
printf("over");
}
void main()
{
int TOP=0;
seqstack A,B;
TOP=push1(&A);
TOP=cmp(&A,&B,TOP);
pop(&A,TOP);
}
‘叁’ 数据结构c语言问题
最近的生产日期在栈顶,而栈打印的时候必须从占地进行操作的,可以采用双端栈的形式或者是两个单站。以双段站为例,这里要注意仓库必须是以队列的存储结构,当上货日期小于货架上原有日期时,将双端栈(即货架)上的信息伊之站的另一头。
分拿来,要加分