資源簡介
數據結構的車廂調度課程設計報告書,具體講述了車廂調度的過程,實驗報告書內容詳細

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