版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#include#include#include #include using namespace std; int visited50=0;struct bus_stop char name20; int number;int distance_front;int distance_later;bus_stop * next; ;struct bus_vertex int bus_number; bus_stop *first;class bus public:bool function_for_flag(int x) int i;for(i=0;i10;i+) if(flagi=x) re
2、turn false;return true;void function_for_result(char a)int i;int k=0;int j;bus_stop *p;for(i=0;iname)=0)(if(function_for_flag(bus_xi.bus_number)=true) flagk=bus_xi.bus_number;k+;)break;)p=p-next;)void function_for_allpath()char start20;char final20;int x;int y;int i;coutstart;8afinal;for(i=0;i50;i+)
3、if(strcmp(,start)=0)x=i;break;)for(i=0;i50;i+)if(strcmp(,final)=0)y=i;break;)s.push(x);while (!s.empty() (AllPath(x, y);)void Print(stack s)(int i;int lucheng=0;stack k;while (!s.empty() (int x;x=s.top();k.push(x);/ ;s.pop();function_for_result();/
4、 cout s.top() /s.pop();)cout所經(jīng)過的站點(diǎn):”; while(!k.empty()(int x;x=k.top();k.pop();if(k.empty()(;lucheng+=vertexx.distance_front;)else(;lucheng+=vertexx.distance_front;)cout具體線路為:;for(i=0;i10;i+)if(flagi!=0)(if(flagi+1!=0)coutflagi;elsecoutflagi;)cout總路程為:lucheng;cout end
5、l;)bool findval(stack s, int val)(while (!s.empty()(if (s.top() = val)(return true;)s.pop();)return false;) void AllPath(int start, int end) (if (start = end)(Print(s);s.pop();return;)for (int i = 0; i 50; +i)(if (matrixstarti =1 & findval(s, vertexi.number) = false)(s.push(i);AllPath(vertexi.number
6、, end);)這一步很重要!對(duì)于start節(jié)點(diǎn)遍歷所有連接,如果遍歷完,就要把stack中的start 節(jié)點(diǎn)pop掉,否則會(huì)無限遞歸s.pop();)bus()int i;int j;for(i=0;i50;i+)for(j=0;j50;j+)if(i=j)matrix_1ij=0;elsematrix_1ij=10000;)for(i=0;i10;i+)flag_1i=0;)for(i=0;i10;i+)(flagi=0;)for(i=0;i50;i+)for(j=0;j50;j+)matrixij=0;for(i=0;i20;i+)(bus_xi.bus_number=0;bus_xi.
7、first=NULL;)for(i=0;i10;i+)(judgei=0;)void alter_bus_stop()int line_number;int r_number;char stop_name20;int i;char new_stop_name20;int new_distance_f;int new_distance_r;cout“輸入需要修改站點(diǎn)所在線路:“l(fā)ine_number;while(cin.fail()|line_number200) cout輸入錯(cuò)誤!請(qǐng)重新輸入:line_number;)for(i=0;i10;i+)if(bus_xi.bus_number=li
8、ne_number)(r_number=i;break;)coutstop_name;coutnew_stop_name;coutnew_distance_f;while(cin.fail()|new_distance_f10) (cout輸入錯(cuò)誤!請(qǐng)重新輸入:new_distance_f;)coutnew_distance_r;while(cin.fail()|new_distance_r10) (cout輸入錯(cuò)誤!請(qǐng)重新輸入:new_distance_r;)bus_stop *p;p=bus_xr_number.first;while(p!=NULL)(if(strcmp(p-name,s
9、top_name)=0)(strcpy(p-name,new_stop_name);p-distance_front=new_distance_f;p-distance_later=new_distance_r;p=p-next;)void delete_bus_stop()(int stop_number;char stop_name20;int r_number;int i;coutstop_number;while(cin.fail()|stop_number200) (cout輸入錯(cuò)誤!請(qǐng)重新輸入:stop_number;)for(i=0;i10;i+)(if(bus_xi.bus_n
10、umber=stop_number)(r_number=i;break;)coutstop_name;bus_stop *p;bus_stop *s;p=bus_xr_number.first;while(p!=NULL)(if(strcmp(p-next)-name,stop_name)=0)(s=p-next;p-next=s-next;break;p=p-next;void creat_bus_stop()int choice;int i;int r_number;cout“輸入需要新增站點(diǎn)所在線路的編號(hào):“choice;while(cin.fail()|choice200)cout輸入
11、錯(cuò)誤!請(qǐng)重新輸入:choice;)for(i=0;i10;i+)if(bus_xi.bus_number=choice) r_number=i; break;)char front_name20;coutfront_name;bus_stop *p;bus_stop *s;s=new bus_stop;char new_name20;int new_distance_f;int new_distance_r;coutnew_name;coutnew_distance_f;coutnew_distance_r;s-distance_front=new_distance_f;s-distance_
12、later=new_distance_r; strcpy(s-name,new_name);/ s-name=new_name;p=bus_xr_number.first;while(p!=NULL)(if(strcmp(p-name,front_name)=0)(s-next=p-next;p-next=s;)p=p-next;)void function_for_bus_stop() int choice;coutendl;cout1.新增站點(diǎn)endl;cout2.刪除站點(diǎn)endl;cout3.修改站點(diǎn)endl;coutendl;cout輸入選擇:choice;while(cin.fail
13、()|choice3)(cout輸入錯(cuò)誤!請(qǐng)重新輸入:choice;)switch(choice)creat_bus_stop();break;delete_bus_stop();break;alter_bus_stop(); break;)void inquiry()int line_number;int i;int r_line_number;cout請(qǐng)輸入需要查詢線路的編號(hào):line_number;for(i=0;i10;i+)if(bus_xi.bus_number=line_number)r_line_number=i;break;)cout下面是該線路的信息:endl;couten
14、dl;bus_stop *p;p=bus_xr_line_number.first;cout該線路的編號(hào):bus_xr_line_number.bus_numberendl;cout站點(diǎn)信息:endl;while(p!=NULL)(cout站點(diǎn)名字:name該站點(diǎn)距離上一站點(diǎn)的距離: distance_front距離下一站點(diǎn)的距離:distance_laternext;)void menu()cout公交管理系統(tǒng)endl;cout1.查看所有線路endl;cout2.查詢線路及其所有站點(diǎn)endl;cout3.增加/刪除/修改公交車線路endl;cout4.添加/刪除/修改公交站點(diǎn)endl;co
15、ut5.最優(yōu)線路endl;cout6.線路查詢(兩站點(diǎn)之間線路)endl;cout7.退出系統(tǒng)endl;coutendl;)void delete_line()int choice;int i;coutchoice;for(i=0;i=bus_line_num;i+)if(bus_xi.bus_number=choice)/ bus_xi.bus_number=0;/ bus_line_num-;judgei=1;/bus_xi.first=NULL;break;)void init_1()bus_stop *s;bus_stop stop_13=A,0,1,1,NULL,B,0,1,1,NU
16、LL,C,0,1,1,NULL;bus_stopstop_25=D,0,1,1,NULL,E,0,1,1,NULL,F,0,1,1,NULL,G,0,1,1,NULL,A,0,1,1,NULL; int i;bus_line_num=1;bus_x0.bus_number=101;for(i=0;iname,stop_1);/ s-name=stop_1;s-number=stop_1i.number;s-distance_front=stop_1i.distance_front;s-distance_later=stop_1i.distance_later;s-nex
17、t=stop_1i.next;s-next=bus_x0.first;bus_x0.first=s; bus_x1.bus_number=102;for(i=0;iname,stop_2);s-number=stop_2i.number;s-distance_front=stop_2i.distance_front; s-distance_later=stop_2i.distance_later; s-next=stop_2i.next;s-next=bus_x1.first;bus_x1.first=s;)void alter_line()int choice;int r_num
18、ber;int i;int k=1;char name20;char r_name20;int distance_f;int distance_r;coutchoice;for(i=0;i10;i+)if(bus_xi.bus_number=choice)r_number=i; break;) ) cout下面是該線路的信息:endl;cout線路編號(hào):bus_xr_number.bus_numberendl;bus_stop *p;p=bus_xr_number.first;while(p!=NULL)cout第,k個(gè)站點(diǎn)的名字:p-Anamevv該站點(diǎn)距離上一站點(diǎn)的距離: distance
19、_front距離下一站點(diǎn)的距離:distance_laternext;) coutendl; cout”請(qǐng)輸入需要修改站點(diǎn)的名字:“name;8ar_name;coutdistance_f;coutdistance_r;p=bus_xr_number.first;while(p!=NULL)(if(strcmp(p-name,name)=0) (strcpy(p-name,r_name); break;) p=p-next;)void modify_busline() (int choice;coutendl;cout1.增加線路endl;cout2.刪除線路endl;cout3.修改線路en
20、dl;coutendl;coutchoice;while(cin.fail()|choice3)(cout輸入錯(cuò)誤!請(qǐng)重新輸入:choice;)switch(choice)system(cls);new_line();break;system(cls);delete_line();break;system(cls); alter_line();)void print()bus_stop *p;int i;for(i=0;i=bus_line_num;i+)if(flag_1i=0)if(judgei=1)elsep=bus_xi.first;cout公交線路:busxlil.bus_numbe
21、yv coutnext=NULL)coutname;elsecoutname;p=p-next;) coutendl;) if(flag_1i=1)if(judgei=1)()elsep=bus_xi.first;cout公交線路:buSXlil.buS_numbeyvcoutnext=NULL)coutname;else coutname ;p=p-next;) coutendl;)void new_line()int num_1;線路數(shù)量int num_2;站點(diǎn)數(shù)量int line_number;線路編號(hào)int distance_f;站點(diǎn)前面距離 int distance;站點(diǎn)后面距離 c
22、har stop_name20;站點(diǎn)名字 int flag;int i;int j;bus_stop *s;cout請(qǐng)輸入公交線路的數(shù)量:num_1;for(i=0;inum_1;i+) ( cout請(qǐng)輸入第i+1line_number;bus_xi+bus_line_num+1.bus_number=line_number; coutflag;if(flag=1) (cout請(qǐng)輸入第i+1條線路的站點(diǎn)數(shù)量:num_2;for(j=0;jnum_2;j+) (s=new bus_stop;cout請(qǐng)輸入第j+1stop_name;strcpy(s-name,stop_name);/s-name
23、=stop_name;s-number=0;coutdistance_f;s-distance_front=distance_f;coutdistance_l;s-distance_later=distance_l;s-next=bus_xi+bus_line_num+1.first;bus_xi+bus_line_num+1.first=s;) if(flag=2)(flag_1i+bus_line_num+1=1; cout請(qǐng)輸入第1,1+1條線路的站點(diǎn)數(shù)量:num_2;for(j=0;jnum_2;j+)(s=new bus_stop;cout請(qǐng)輸入第j+1stop_name;strcp
24、y(s-name,stop_name);/s-name=stop_name;s-number=0;coutdistance_f;s-distance_front=distance_f;coutdistance_l;s-distance_later=distance_l;s-next=bus_xi+bus_line_num+1.first;bus_xi+bus_line_num+1.first=s;)bus_line_num+=num_1;)void search()char start20;char final20; stack s; stack q;int i;int v;int x;int
25、 flag_1=1;int flag;int visited50=0;int data50=0;coutstart;coutfinal;for(i=0;i50;i+)if(strcmp(,start)=0)v=i;break;visitedv=1;datav=1;s.push(v);q.push(v);;while(!s.empty()&flag_1=1)int xx;x=s.top();for(i=0;i50;i+)if(matrixxi!=0&visitedi=0)if(strcmp(,final)=0) fl
26、ag_1=0;datai=1;q.push(i);visitedi=1;flag=1;s.push(i);break;if(flag=0)xx=s.top();s.pop();coutxx=xx;dataxx=0; q.pop();)flag=0;coutendl;while(!q.empty()/coutq.top();coutvertexq.top().name-;q.pop();)coutendl;bool issave(char a) int i;for(i=0;i50;i+)if(strcmp(,a)=0)return false;break;) )retur
27、n true;) void to_matrix_1()int i;int num_1;int num_2;int j=0;bus_stop *p;for(i=0;iname)=true)(strcpy(,p-name);p-number=j;vertexj.number=p-number;vertexj.distance_front=p-distance_front; vertexj.distance_later=p-distance_later;vertexj.next=p-next;j+;) else(int i;int x;for(i=0;iname)=0) (x
28、=i;break;)p-number=vertexx.number;)p=p-next;)/ coutvertex6.numberendl;bus_stop *f;bus_stop *r;for(i=0;inext;if(flag_1i=0)(while(r!=NULL)(num_1=f-number;num_2=r-number;f=f-next;r=r-next;matrix_1num_1num_2=f-distance_front;)if(flag_1i=1)(while(r!=NULL)(num_1=f-number;num_2=r-number;f=f-next;r=r-next;m
29、atrix_1num_1num_2=f-distance_front;matrix_1num_2num_1=f-distance_front;)/*for(i=0;i10;i+)(for(j=0;j10;j+)(coutmatrixij;)coutendl;)*/void to_matrix()int i;int num_1;int num_2;int j=0;bus_stop *p;for(i=0;iname)=true)strcpy(,p-name);p-number=j;vertexj.number=p-number;vertexj.distance_front=
30、p-distance_front; vertexj.distance_later=p-distance_later; vertexj.next=p-next;j+;)else int i;int x;for(i=0;iname)=0) ( x=i;break;)p-number=vertexx.number;)p=p-next;)/ coutvertex6.numberendl;bus_stop *f;bus_stop *r;for(i=0;inext;if(flag_1i=0)(while(r!=NULL) (num_1=f-number;num_2=r-number;f=f-next;r=r-next;matrixnum_1num_2=1;)if(flag_1i=1)(while(r!=NULL)(num_1=f-number;num_2=r-number;f=f-next;r=r-next;matrixnum_1num_2=1;matrixnum_2num_1=1;)/*for(i=0;i10;i+)(for(j=0;j10;j+)(coutmatrixij;)coutendl;)*/) void floyd()(char start20;char final20;int P5050;int D5050;int v, w, k;int x;int y;int i,j;/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社服行業(yè)2025年行業(yè)競(jìng)爭(zhēng)格局優(yōu)化關(guān)注性價(jià)比消費(fèi)
- 2020年江浙滬等六省編導(dǎo)統(tǒng)考筆試真題
- 醫(yī)藥電商企業(yè)藥師勞動(dòng)合同模板
- 農(nóng)村教育個(gè)人承包施工協(xié)議
- 橋梁護(hù)欄安裝工程合同
- 天津市二手房買賣
- 商業(yè)地產(chǎn)二手房交易合同范本
- 農(nóng)業(yè)加工企業(yè)員工住宿租賃協(xié)議
- 私人管家保姆服務(wù)合同范本
- 教育培訓(xùn)電源設(shè)備租賃服務(wù)合約
- 中國鐵路國際有限公司招聘考試試卷2022
- 電子政務(wù)概論-形考任務(wù)5(在線測(cè)試權(quán)重20%)-國開-參考資料
- 古代小說戲曲專題-形考任務(wù)2-國開-參考資料
- 建筑幕墻工程(鋁板、玻璃、石材)監(jiān)理實(shí)施細(xì)則(全面版)
- 構(gòu)美-空間形態(tài)設(shè)計(jì)學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 2023年高中學(xué)業(yè)水平合格考試英語詞匯表完整版(復(fù)習(xí)必背)
- HPE 3PAR8400、HPE 3000B SAN Switch安裝及維護(hù)手冊(cè)
- 產(chǎn)萬噸高密度聚乙烯聚合工段工藝設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文 外文文獻(xiàn)翻譯 中英文對(duì)照 21世紀(jì)的硅微電子學(xué)
- 中控考勤管理系統(tǒng)數(shù)據(jù)庫結(jié)構(gòu)
- 醫(yī)院關(guān)鍵財(cái)務(wù)管理崗位定期輪換與交接制度
評(píng)論
0/150
提交評(píng)論