倒貨架演算法
『壹』 請大家幫忙編 一個數據結構的演算法 用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語言問題
最近的生產日期在棧頂,而棧列印的時候必須從佔地進行操作的,可以採用雙端棧的形式或者是兩個單站。以雙段站為例,這里要注意倉庫必須是以隊列的存儲結構,當上貨日期小於貨架上原有日期時,將雙端棧(即貨架)上的信息伊之站的另一頭。
分拿來,要加分