?? 推箱子.c
字號(hào):
#include<stdio.h>
#include<stdlib.h>
typedef struct ele{
int vno; /*物品號(hào)*/
struct ele *link; /*另一物品的指針*/
}ELE;
typedef struct hnode{
int remainder;/*箱子尚剩空間*/
ELE *head; /*箱內(nèi)物品鏈?zhǔn)自羔?/
struct hnode *next;/*箱子鏈的后繼箱子指針*/
}HNODE;
main()
{
int n,i,box_count,box_volume,*a;
HNODE *box_h,*box_t,*j;
ELE *p,*q;
printf("輸入箱子容積 ");
scanf("%d",&box_volume);
printf("輸入物品種數(shù) ");
scanf("%d",&n);
a=(int *)malloc(sizeof(int )*n);/*存儲(chǔ)物品體積信息的數(shù)組*/
printf( "請(qǐng)按體積大小順序輸入各物品的體積: ");
for(i=0;i<n;i++)
scanf("%d",a+i);
box_h=box_t=NULL; /*預(yù)置已用箱子鏈為空*/
box_count=0; /*預(yù)置已用箱子計(jì)數(shù)器為0*/
for(i=0;i<n;i++)
{ /*從第一只箱子開始順序?qū)ふ夷芊湃胛锲穒 的箱子j*/
p=(ELE *)malloc(sizeof(ELE));
p->vno=i;
for(j=box_h;j!=NULL;j=j->next)
if(j->remainder>=a[i ])
break; /*找到還可以裝物品i的箱子*/
if(j==NULL)
{ /*已用箱子都不能裝物品i*/
j=(HNODE *)malloc(sizeof(HNODE)); /*使用一只新的箱子*/
j->remainder=box_volume-a[i ];
j->head=NULL;
if(box_h==NULL)
box_h=box_t=j; /* box-t有什么用處,能解釋一下嗎?*/
else box_t=box_t->next=j; /*此外box-t又有什么用(在程序中),請(qǐng)說詳一細(xì)*/
j->next=NULL;
box_count++;
}
else
j->remainder=a[i ]; /*將物品i放入箱子j*/
for(q=j->head;q!=NULL&&q->link!=NULL;q=q->link);/*從這里起是放入物品號(hào)*/
if(q==NULL)
{
p->link=j->head;
j->head=p;
}
else
{
p->link=NULL;
q->link=p;
}
}/*for i*/
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -