-
大小: 74KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-13
- 語(yǔ)言: 其他
- 標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu)??
資源簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)的車(chē)廂調(diào)度課程設(shè)計(jì)報(bào)告書(shū),具體講述了車(chē)廂調(diào)度的過(guò)程,實(shí)驗(yàn)報(bào)告書(shū)內(nèi)容詳細(xì)

代碼片段和文件信息
#include
#include
#define?MAXSIZE?10000
int?n;
int?path[MAXSIZE];???/*定義全局變量*/
struct?pathss{
??int?paths[MAXSIZE][MAXSIZE];
??int?number;
}AllPath;???????????/*定義一個(gè)二維數(shù)組來(lái)保存所有的輸出序列*/
struct?SNode{
??int?data[MAXSIZE];
??int?top;
}S;?????????????????/*棧的順序存儲(chǔ)結(jié)構(gòu)的定義*/
void?InitStack()????/*棧的初始化*/
{
??S.top=-1;
}
void?Push(int?q)????/*進(jìn)棧*/
{
??S.data[++S.top]=q;
}
int?Pop()???????????/*出棧*/
{
??int?temp;
??temp=S.data[S.top--];
??return?temp;
}
int?StackEmpty()????/*判斷棧是否為空*/
{
??if(S.top==-1)
????return?1;
??else
????return?0;
}
void?Attemper(int?posint?path[]int?cur)??/*調(diào)度過(guò)程*/
{
??int?mi;
??if(pos ???{
?????Push(pos+1);???/*一個(gè)數(shù)進(jìn)棧后要么立刻出棧要么進(jìn)行下一個(gè)數(shù)的進(jìn)棧*/
?????Attemper(pos+1pathcur);
?????Pop();
???}
?if(!StackEmpty())
???{
?????m=Pop();???????/*一個(gè)數(shù)出棧后要么繼續(xù)出棧(棧不空)要么繼續(xù)下一個(gè)數(shù)的進(jìn)棧*/
?????path[cur++]=m;
?????Attemper(pospathcur);
?????Push(m);
???}
?if(pos==n?&&?StackEmpty())???/*一種可能輸出序列產(chǎn)生*/
???{
?????printf(“\t\t\t“);
?????printf(“%2d:“AllPath.number+1);
?????for(i=0;i ?{
????????printf(“%3d“path[i]);
????????AllPath.paths[AllPath.number][i]=path[i];??/*將每種序列保存在二維數(shù)組里*/
?????}
?????printf(“\n“);
?????AllPath.number++;
???}
}
void?Print()???/*一個(gè)棧打印操作*/
{
??int?i;
??for(i=S.top;i>=0;i--)
????printf(“\t\t\t??|%d|\n“S.data[i]);
}
void?DisplayOnly(int?kint?Outputint?Input)/*顯示操作序列的狀態(tài)的變化過(guò)程*/
{?
??int?j;
??getchar();????
??for(j=0;j<=Output;j++)
????printf(“<---%d“AllPath.paths[k][j]);???/*顯示輸出序列的狀態(tài)變化*/
??printf(“\n“);
??Print();??????????
??printf(“\t\t\t\t\t“);
??for(j=Input;j<=n;j++)??????????????????????/*顯示輸入序列的狀態(tài)變化*/
?????printf(“<---%d“j);??????
??printf(“\n“);
}
void?ChooseDisplay()???/*狀態(tài)變化過(guò)程*/
{
??int?kOutputInput=1;????????????????????????????????/*k為輸出序列的序號(hào)*/
??printf(“請(qǐng)輸入你想要查看序列狀態(tài)變化過(guò)程的序號(hào):“);???/*output為當(dāng)前輸出的序號(hào)*/
??scanf(“%d“&k);??????????????????????????????????????/*input為當(dāng)前輸入的序號(hào)*/
??k=k-1;
??InitStack();
??printf(“\n????輸出序列\(zhòng)t???????????棧\t\t??輸入序列“);
??DisplayOnly(k-11);
??for(Output=0;Output ??{?
????if(AllPath.paths[k][Output]>=Input)??????/*當(dāng)輸出序列中當(dāng)前的數(shù)據(jù)大于等于入口處*/
??????{??????????????????????????????????????/*的數(shù)據(jù)時(shí)?入口處的數(shù)據(jù)要一直壓棧*/
???????while(AllPath.paths[k][Output]>=Input)/*直到當(dāng)前的數(shù)據(jù)小于等于入口處的數(shù)據(jù)*/
?????????{
??????????Push(Input);
??????????Input++;
??????????DisplayOnly(kOutput-1Input);??
?????????}
???????Pop();
???????DisplayOnly(kOutputInput);??
??????}???
????else?????????????????????????????????????/*當(dāng)序列中當(dāng)前的數(shù)據(jù)小于入口處*/
{????????????????????????????????????????/*的數(shù)據(jù)時(shí)彈出棧頂重新顯示結(jié)果*/
???????Pop();
???????DisplayOnly(kOutputInput);??
??????}
??}
}
void?message()??????/*菜單顯示*/
{
??printf(“\n\t\t\t*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n?“);
??printf(“\t\t\t*\t1:輸入火車(chē)的長(zhǎng)度N\t*\n“);
??printf(“\t\t\t*\t2:輸出所有可能序列\(zhòng)t*\n“);
??printf(“\t\t\t*\t3:演示一個(gè)序列變化\t*\n“);
??printf(“\t\t\t*\t4:退出本程序\t\t*\n“);
??printf(“\t\t\t*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*?*\n“);
}
voi
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件????1206784??2008-01-03?18:25??數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告模板(軟件061).doc
?????文件???????3975??2008-01-03?18:23??Cpp1.cpp
?????文件?????200772??2008-01-03?15:34??Cpp1.exe
-----------?---------??----------?-----??----
??????????????1411531????????????????????3
評(píng)論
共有 條評(píng)論