數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(C語言版)飛機(jī)訂票系統(tǒng)教學(xué)文案_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(C語言版)飛機(jī)訂票系統(tǒng)教學(xué)文案_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(C語言版)飛機(jī)訂票系統(tǒng)教學(xué)文案_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(C語言版)飛機(jī)訂票系統(tǒng)教學(xué)文案_第4頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)( C 語言版) 飛機(jī)訂票系統(tǒng) C 語言版課題:飛機(jī)訂票系統(tǒng)和圖的遍歷的動態(tài)演示姓名:學(xué)號:班級:指導(dǎo)教師:訂票系統(tǒng)1.需求分析任務(wù):通過此系統(tǒng)可以實(shí)現(xiàn)如下功能:錄入:可以錄入航班情況(數(shù)據(jù)可以存儲在一個數(shù)據(jù)文件中,數(shù)據(jù)結(jié)構(gòu)、具體數(shù)據(jù)自定)查詢:可以查詢某個航線的情況(如,輸入航班號,查詢起降時間,起飛抵達(dá)城市,航班票價(jià),票價(jià)折扣,確定航班是否滿倉);可以輸入起飛抵達(dá)城市,查詢飛機(jī)航班情況;訂票:(訂票情況可以存在一個數(shù)據(jù)文件中,結(jié)構(gòu)自己設(shè)定)可以訂票,如果該航班已經(jīng)無票,可以提供相關(guān)可選擇航班;退票: 可退票,退票后修改相關(guān)數(shù)據(jù)文件;客戶資料有姓名,證件號,訂票數(shù)量及航班情況

2、,訂單要有編號。修改航班信息:當(dāng)航班信息改變可以修改航班數(shù)據(jù)文件要求:根據(jù)以上功能說明,設(shè)計(jì)航班信息,訂票信息的存儲結(jié)構(gòu),設(shè)計(jì)程序完成功能;2:主要設(shè)計(jì)思路:1)算法構(gòu)造流程圖:A:主菜單:主菜單0123456789輸列出按航按訂票退票修改保存讀取退出入航班班號城程序系統(tǒng)飛機(jī)文件文航的信查詢市航班件 、班息航班來的信下載的信息查息文件信詢息航班B:各分塊模板的構(gòu)造流程圖:0.輸入航班的信息航班起飛城降落城出發(fā)時降落時剩下的座價(jià)折號市市間間位格扣1.列出航班的信息繼續(xù)y退出n2.按航班號查詢航班信息輸入所需要查詢的航班號顯示這個航班的的信息3.按城市來查詢航班輸入起飛城市輸入降落城市顯示這個航班

3、的信息4.訂票程序輸入號碼輸入名字輸入 ID需要定的票航班號數(shù)5.退票系統(tǒng)輸入航班號輸入你 ID確定退票1否定06.修改飛機(jī)航班的信息輸入要修改的航班號重新輸入新的航班信息7.保存文件顯示保存成功3:功能函數(shù)設(shè)計(jì):( 1):訂票系統(tǒng)主菜單函數(shù) menu_select()本函數(shù)主要構(gòu)造系統(tǒng)的主菜單,系統(tǒng)需要實(shí)現(xiàn)很多功能,并且各個功能需要各自的函數(shù)支持,所以通過主菜單可以輕松的進(jìn)入各個函數(shù)下實(shí)現(xiàn)各自的功能,故主菜單顯得尤為重要。其實(shí)就是通過鍵盤輸入選擇項(xiàng),然后通過scanf 接受,在通過 swtich 判斷進(jìn)入各個選擇項(xiàng)。( 2):工作人員管理函數(shù) enter()&change ()系統(tǒng)需

4、要各個航班的詳細(xì)信息,所以需要工作人員把信息輸入系統(tǒng)里,以供乘客查詢訂票。enter()函數(shù)的構(gòu)造就是為了解決這個問題。而有可能航班線路更改或由于天氣等原因飛機(jī)的起飛時間發(fā)生了更改,故工作人員需要及時更改信息,所以需要構(gòu)造change()函數(shù)。( 3):列出航班信息的函數(shù) list ()乘客需要查詢各個航班的信息,所以通過系統(tǒng)要能調(diào)出上面工作人員已經(jīng)錄入好的航班信息,所以構(gòu)造本函數(shù)來實(shí)現(xiàn)這個功能。(4)乘客具體查詢函數(shù)search()本函數(shù)分兩個分函數(shù):search1()和 search2(),它們分別實(shí)現(xiàn)乘客的按航班查詢和按出發(fā)及抵達(dá)城市的兩種查詢方案。(5)票務(wù)管理函數(shù) book () &

5、amp;quit ()通過 book()函數(shù)可以實(shí)現(xiàn)乘客的訂票操作,通過quit ()可以實(shí)現(xiàn)乘客的退票操作。(6)文件操作函數(shù) save() &load ()3.源程序代碼:( WIN TC 下運(yùn)行)#include <dos.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN 20#defineQ 40/* 定義數(shù)據(jù)結(jié)構(gòu) */*乘客信息*/typedefstructchar number10;/* 編號 */char id20;/* 證件號 */char na

6、me10;/* 姓名 */intcount;/* 訂票數(shù) */char flightname10;/* 乘坐航班號 */GUEST;/* 航班信息 */typedef struct char planenumber10;/* 航班號 */char Take_off_city20;/* 起飛城市 */char Arrived_in_city20;/* 抵達(dá)城市 */char takeoff_time20;/* 起飛時間 */char Landing_time20;/* 降落時間 */int shipping;/* 艙位數(shù) */char price5;/* 票價(jià) */char discount5;

7、/* 折扣 */GUEST guest20;int sit;FLY;/* 菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/menu_select()intc;printf(" 按任意鍵返回主菜單n" ); /*提示壓任意鍵繼續(xù)*/getch();/*讀入任意字符*/printf("Welcome tonn");printf("Tickets Booking Systemnn");printf("*MENU*nn");printf("0.輸入航班信息 n" );printf("1.列出航

8、班的信息 n");printf("2.按航班號查詢航班信息 n" );printf("3.按城市來查詢航班 n" );printf("4.訂票程序 n");printf("5.退票系統(tǒng) n");printf("6.修改飛機(jī)航班的信息 n" );printf("7.保存文件 n");printf("8.讀取和下載文件 n");printf("9.退出 n" );printf("*nn");doprintf(&

9、quot;n輸入你的選擇項(xiàng) (09):"); /* 提示輸入選項(xiàng) */scanf("%d",&c);/* 輸入選擇項(xiàng) */ while (c<0|c>9);/* 選擇項(xiàng)不在 9之間重輸 */returnc;/* 返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/*輸入函數(shù) */intenter(FLY t)int i,k,n,m,w,j;char *s;printf(" 輸入航線總數(shù) (n<=40):" );/* 輸入航線總數(shù) */scanf("%d",&n);while (n>40|n&l

10、t;0)printf(" 輸入錯誤 ! 再次輸入 (0<n<=40):" ); /* 輸入航線總數(shù) */scanf("%d",&n);printf("輸入航班的信息 nn" ); /* 提示信息 */printf(" 航班號起飛城市降落城市出發(fā)時間 降落時間 剩下的座位價(jià)格 折扣 n" );printf("-n" );for (i=0;i<n;i+)scanf("%s" ,ti.planenumber);/* 輸入姓名 */scanf("%

11、s" ,ti.Take_off_city);/* 輸入起飛城市 */scanf("%s" ,ti.Arrived_in_city);/* 輸入降落城市 */scanf("%s" ,ti.takeoff_time);/* 輸入起飛時間 */scanf("%s" ,ti.Landing_time);/* 輸入降落時間 */scanf("%d",&ti.shipping);/* 輸入艙位數(shù) */scanf("%s" ,ti.price);/* 輸入票價(jià) */scanf("%

12、s" ,ti.discount);/*輸入折扣*/printf("-n");for (i=0;i<n;i+)ti.sit=0;returnn;/* 返回記錄條數(shù)*/* 顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù) void list(FLY t, int n) */inti;printf(" 航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價(jià)格折扣 n" );printf("-n" );for (i=0;i<n;i+)printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn&q

13、uot; ,ti.planenumber,ti.Take_off_city,ti.Arrived_in_city,ti.takeoff_time,ti.Landing_time,ti.shipping,ti.price,ti.discount);printf("*end*n");/* 按航班號查找記錄*/void search1(FLY t,intn)char s20;/* 保存待查找航班名字符串*/inti;printf(" 輸入你想查找的航班名:" );scanf("%s" ,s);/* 輸入待查找航班名*/for (i=0;i&

14、lt;n;i+)/* 從第一條記錄開始,直到最后一條*/if (strcmp(s,ti.planenumber)=0)/* 記錄中的航班名和待比較的是否相等break ;/* 相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/*/if (i>n-1)/*如果整數(shù) i 值大于 n-1 ,說明沒找到*/printf(" 沒有找到 n" );elseprintf(" 航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價(jià)格折扣 n" );/* 顯示記錄*/printf(n" );"-printf("%-12s%-12s%-10s%-

15、12s%-10s%-7d%-7s%-7sn" ,ti.planenumber,ti.Take_off_city,ti.Arrived_in_city,ti.takeoff_time,ti.Landin g_time,ti.shipping,ti.price,ti.discount);/* 按起降城市查找記錄 void search2(FLY t, */intn)char s120;char s220;inti;printf(" 輸入起飛城市名稱:" );scanf("%s" ,s1);/* 輸入起飛城市名*/printf(" 輸入降落

16、城市名稱:" );scanf("%s" ,s2);/* 輸入降落城市名*/for (i=0;i<n;i+)/* 從第一條記錄開始,直到最后一條*/if (strcmp(s1,ti.Take_off_city)=0)&&(strcmp(s2,ti.Arrived_in_city)=0)/*記錄中的城市和待比較的是否相等*/break ;/*相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/if (i>n-1)/*如果整數(shù) i 值大于 n-1 ,說明沒找到*/printf(" 沒有找到 n" );elseprintf(&qu

17、ot; 航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價(jià)格折扣 n" );/* 找到,顯示記錄 */printf(n" );"-printf("%-12s%-12s%-10s%-12s%-10s%-7d%-7s%-7sn" ,ti.planenumber,ti.Take_off_city,ti.Arrived_in_city,ti.takeoff_time,ti.Landin g_time,ti.shipping,ti.price,ti.discount);/* 訂票 */void book(FLY t,intn)char s20,numbe

18、r110,name110,id120,flightname110;inti,j=0,m,k,count1;printf(scanf(" 輸入你想預(yù)訂的票數(shù)"%d",&m);:" );printf( " 號碼 姓名 證件號 訂的票數(shù) printf( "-n"航班號 n" );/* 提示信息);*/for (k=0;k<m;k+)scanf("%s" ,number1);scanf("%s" ,name1); /* 輸入訂票客戶姓名*/scanf("%s&

19、quot; ,id1);/* 輸入證件號 */scanf("%d",&count1);/* 輸入訂票票數(shù) */scanf("%s" ,flightname1);/* 輸入航班號 */for (i=0;i<n;i+)/* 從第一條記錄開始,直到最后一條*/if (strcmp(flightname1,ti.planenumber)=0)/*記錄中的航班名和待比較的是否相等*/j=ti.sit;strcpy(ti.guestj.number,number1);strcpy(,name1);strcpy(ti.gues

20、tj.id,id1);ti.guestj.count=count1;strcpy(ti.guestj.flightname,flightname1);ti.shipping=ti.shipping-count1;ti.sit+;break ;/* 相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/if (i>n-1)/* 如果整數(shù) i 值大于 n-1 ,說明沒找到 */printf(" 對不起!沒有此航班n" );m=m+2;k+;/* 退票 */void quit(FLY t,intn)char s120,s220;/* 保存待查找航班名和證件號字符串inti,k,j,

21、h,l,ch;printf(" 請輸入你想退訂的航班號:" );scanf("%s" ,s1);/* 輸入待查找航班名*/printf(" 請輸入你的證件號:" );scanf("%s" ,s2);/* 輸入待查找證件號*/printf(" 號碼姓名證件號訂的票數(shù)printf("-n"*/航班號 n" );/* 顯示提示);*/for (i=0;i<n;i+)/* 從第一條記錄開始,直到最后一條*/for (j=0;j<ti.sit;j+)if (strcmp(s

22、1,ti.guestj.flightname)=0)&&(strcmp(s2,ti.guestj.id)=0)printf("%-11s%-16s%-16s%-14d%-10sn" ,ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.gue stj.flightname);ti.shipping=ti.shipping+ti.guestj.count;l=j;h=i;break ;i=h;if (i>n-1)/*如果整數(shù) i 值大于 n-1 ,說明沒找到*/printf(&q

23、uot; 沒有找到 n" );elseprintf(" 你是否確認(rèn)刪除(1/0)n");scanf("%d",&ch);/* 輸入一個整數(shù)或/* 確認(rèn)是否要刪除*/*/if (ch=1)/* 如果確認(rèn)刪除整數(shù)為*/for (k=l+1;k<ti.sit;k+)strcpy(ti.guestk-1.number,ti.guestk.number);strcpy(,);strcpy(ti.guestk-1.id,ti.guestk.id);ti.guestk-1.count=

24、ti.guestk.count;strcpy(ti.guestk-1.flightname,ti.guestk.flightname);ti.sit-;printf(" 退票成功 !n"); /* 提示退票成功 */*將后一條記錄的姓名拷貝到前一條*/* 修改航班信息 */void channge(FLY t,intn)char s20;/* 要刪除記錄的姓名*/inti,j;printf(" 請輸入你要修改的航班號:" );/* 提示信息*/scanf("%s" ,s);/*輸入航班名*/for (i=0;i<n;i+)/*從

25、第一條記錄開始,直到最后一條*/if (strcmp(s,ti.planenumber)=0)/* 記錄中的航班名和待比較的是否相等break ;/* 相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/*/if (i>n-1)/*如果整數(shù) i 值大于 n-1 ,說明沒找到*/printf(" 沒有找到 n" );elseprintf(" 航班號起飛城市降落城市出發(fā)時間降落時間剩下的座位價(jià)格折扣 n" );/* 找到,顯示原先記錄*/printf("-n" );printf("%-12s%-12s%-10s%-12s%-10

26、s%-7d%-7s%-7sn" ,ti.planenumber,ti.Take_off_city,ti.Arrived_in_city,ti.takeoff_time,ti.Landing_time,ti.shipping,ti.price,ti.discount);printf("please input the new information:n");scanf("%s" ,ti.planenumber);/* 輸入航班名 */scanf("%s" ,ti.Take_off_city);/* 輸入起始城市 */scanf

27、("%s" ,ti.Arrived_in_city);/* 輸入終點(diǎn)城市*/scanf("%s" ,ti.takeoff_time);/* 輸入起飛時間 */scanf("%s" ,ti.Landing_time);/* 輸入降落時間 */scanf("%d",ti.shipping);/* 輸入座位號 */scanf("%s" ,ti.price);/* 輸入票價(jià) */scanf("%s" ,ti.discount);/* 輸入折扣 */* 保存資料 */ void sav

28、e(FLY t, intn)inti,j;FILE *fp;/* 指向文件的指針*/if (fp=fopen("record1.txt", "wb" )=NULL)/*打開文件,并判斷打開是否正常*/printf(exit(1);"can not open filen"/* 退出 */); /* 沒打開 */printf("n 保存文件 n" );/* 輸出提示信息 */fprintf(fp,"%d",n);/* 將記錄數(shù)寫入文件*/fprintf(fp,"rn");/* 將

29、換行符號寫入文件*/for (i=0;i<n;i+)fprintf(fp,"%s%s%s%s%s%d%s%s",ti.planenumber,ti.Take_off_city,ti.Arrived_in_city,ti.takeoff_time,ti.Landing_time,ti.shipping,ti.price,ti.discount);fprintf(fp,"rn");/*將換行符號寫入文件 */fprintf(fp,"%d",ti.sit);/* 將記錄數(shù)寫入文件 */fprintf(fp,"rn"

30、);/*將換行符號寫入文件 */for (j=0;j<ti.sit;j+)fprintf(fp,"%s%s%s%d%s",ti.guestj.number,,ti.guestj.id,ti.guestj.count,ti.guestj.flightname);fprintf(fp,/* 格式寫入記錄*/"rn");/* 將換行符號寫入文件*/fclose(fp);/*關(guān)閉文件 */printf("*恭喜!保存成功*n");/* 顯示保存成功*/*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/intload(FLY t

31、)inti,n,j;FILE *fp; /* if (fp=fopen(指向文件的指針*/"record1.txt", "rb" )=NULL) /* 打開文件*/printf(exit(1);" 不能打開 n" );/* 退出 */* 不能打開 */fscanf(fp,"%d",&n);/* 讀入記錄數(shù) */for (i=0;i<n;i+)fscanf(fp,"%s%s%s%s%s%d%s%s",ti.planenumber,ti.Take_off_city,ti.Arrived

32、_in_city,ti.takeoff_time,ti.Landing_ time,&ti.shipping,ti.price,ti.discount);fscanf(fp,"%d",&ti.sit);/* 讀入記錄數(shù) */for (j=0;j<ti.sit;j+)fscanf(fp,"%s%s%s%d%s",ti.guestj.number,,ti.guestj.id,&ti.guestj.count,ti.guestj.flightname);/*按格式讀入記錄*/fclose(fp);/*關(guān)

33、閉文件*/printf(" 你已經(jīng)成功從文件讀取數(shù)據(jù)!nnnn");/* 顯示讀取成功*/returnn;/* 返回記錄數(shù)*/* 主函數(shù) */main()inti;FLY flightQ;intlength;/*保存記錄長度*/for (;)/*無限循環(huán)*/switch (menu_select()/*調(diào)用主菜單函數(shù),返回值整數(shù)作開關(guān)語句的條件*/case 0:length=enter(flight);break ; /* 輸入記錄 */case 1:list(flight,length);break ;/* 顯示全部記錄*/case 2:search1(flight,le

34、ngth);break ;/* 查找記錄 */case 3:search2(flight,length);break ;/* 查找記錄 */case 4:book(flight,length);break ;/* 訂票 */case 5:quit(flight,length);break ;/* 退票 */case 6:channge(flight,length);break ;/* 修改航班信息case 7:save(flight,length);break ;/* 保存文件 */case 8:length=load(flight);break ;/* 讀文件 */case 9:exit(0

35、);/* 如返回值為則程序結(jié)束*/*/4.系統(tǒng)運(yùn)行時窗口截圖:(VC6.0 下的運(yùn)行結(jié)果)訂票系統(tǒng)菜單窗口0.輸入航班的信息1.列出航班的信息2.按航班號查詢航班信息3.按城市來查詢航班4.訂票程序5.退票系統(tǒng)6.修改飛機(jī)航班的信息7.保存文件8.讀取文件 、下載文件圖的遍歷過程演示一需求分析 :設(shè)計(jì)程序完成如下功能:對給定的圖的結(jié)構(gòu)和起點(diǎn),產(chǎn)生深度優(yōu)先遍歷和廣度優(yōu)先遍歷,并列出求解的過程動態(tài)演示。二主要設(shè)計(jì)思路:設(shè)計(jì)思想:簡而言之,深度優(yōu)先,就是先遍歷它的一個鄰接點(diǎn),這個鄰接點(diǎn)的鄰接點(diǎn) 然后才遍歷其他的鄰接點(diǎn)。廣度優(yōu)先,就是先把它所有的鄰接點(diǎn)都遍歷完以后,再遍歷它每個鄰接點(diǎn)的鄰接點(diǎn)。存儲結(jié)構(gòu)

36、為圖的鄰接多重表,它是無向圖的一種鏈?zhǔn)酱鎯Y(jié)構(gòu)。深度優(yōu)先遍歷:設(shè) x 是當(dāng)前被訪問頂點(diǎn),在對 x 做過訪問標(biāo)記后,選擇一條從 x 出發(fā)的未檢測過的邊 (x ,y) 。若發(fā)現(xiàn)頂點(diǎn) y 已訪問過,則重新選擇另一條從 x 出發(fā)的未檢測過的邊,否則沿邊 (x ,y)到達(dá)未曾訪問過的 y,對 y 訪問并將其標(biāo)記為已訪問過;然后從 y 開始搜索,直到搜索完從 y 出發(fā)的所有路徑,即訪問完所有從 y 出發(fā)可達(dá)的頂點(diǎn)之后,才回溯到頂點(diǎn) x,并且再選擇一條從 x 出發(fā)的未檢測過的邊。上述過程直至從 x 出發(fā)的所有邊都已檢測過為止。此時,若 x 不是源點(diǎn),則回溯到在 x 之前被訪問過的頂點(diǎn);否則圖中所有和源點(diǎn)有路

37、徑相通的頂點(diǎn) ( 即從源點(diǎn)可達(dá)的所有頂點(diǎn) ) 都已被訪問過,若圖 G是連通圖,則遍歷過程結(jié)束,否則繼續(xù)選擇一個尚未被訪問的頂點(diǎn)作為新源點(diǎn),進(jìn)行新的搜索過程。廣度優(yōu)先遍歷:設(shè)x 和 y 是兩個相繼要被訪問的未訪問過的頂點(diǎn)。它們的鄰接點(diǎn)分別記為x1,x2, ,xs 和 y1,y2, ,yt 。為確保先訪問的頂點(diǎn)其鄰接點(diǎn)亦先被訪問,在搜索過程中使用隊(duì)列來保存已訪問過的頂點(diǎn)。當(dāng)訪問 x 和 y 時,這兩個頂點(diǎn)相繼入隊(duì)。此后,當(dāng) x 和 y 相繼出隊(duì)時,我們分別從 x 和 y 出發(fā)搜索其鄰接點(diǎn)x1,x2, ,xs 和 y1,y2, ,yt ,對其中未訪者進(jìn)行訪問并將其入隊(duì)。這種方法是將每個已訪問的頂點(diǎn)入

38、隊(duì),故保證了每個頂點(diǎn)至多只有一次入隊(duì)。A. 圖的算法構(gòu)造思想:1CreateALGraph()初始條件 :V 是圖的頂點(diǎn)集 ,VR 是圖中弧的集合 .操作結(jié)果 : 按 V 和 VR是定義構(gòu)造圖 G.2. DestroyGraph(&G)初始條件 : 圖 G存在操作結(jié)果 : 銷毀圖 G3LocateVex(G,u)初始條件 :圖 G存在 ,u 和 G中頂點(diǎn)有相同的特征操作結(jié)果 : 若圖 G中存在頂點(diǎn) u, 則返回該頂點(diǎn)在圖中的位置; 否則返回其他信息4. GetVex(G,v)初始條件 :圖 G存在 ,v 是 G中頂點(diǎn)操作結(jié)果 : 返回 v 的值5. FirstAjvex(G,v)初始條

39、件 :圖 G存在 ,v 是 G中頂點(diǎn)操作結(jié)果 : 返回 v 的第一個鄰接頂點(diǎn) , 若頂在圖中沒有鄰接頂點(diǎn) , 則返回為空6. NextAjvex(G,v,w)初始條件 :圖 G存在 ,v 是 G中頂點(diǎn) ,w 是 v 的鄰接頂點(diǎn)操作結(jié)果 : 返回 v 的下一個鄰接頂點(diǎn) , 若 w是 v 的最后一個鄰接頂點(diǎn) , 則返回空7. DeleteVexx(&G,v)初始條件 :圖 G存在 ,v 是 G中頂點(diǎn)操作結(jié)果 : 刪除頂點(diǎn) v 已經(jīng)其相關(guān)的弧8. DFStraverse(ALGraph)初始條件 :圖 G存在 ,visit的頂點(diǎn)的應(yīng)用函數(shù)操作結(jié)果 :對圖進(jìn)行深度優(yōu)先遍歷 , 在遍歷過程中對每

40、個結(jié)點(diǎn)調(diào)用 visit函數(shù)一次 , 一旦 visit失敗, 則操作失敗9. BFStraverse(ALGraph)初始條件 :圖 G存在 ,visit的頂點(diǎn)的應(yīng)用函數(shù)操作結(jié)果 :對圖進(jìn)行廣度優(yōu)先遍歷 , 在遍歷過程中對每個結(jié)點(diǎn)調(diào)用 visit函數(shù)一次 , 一旦 visit失敗 ,則操作失敗附圖的結(jié)構(gòu)體構(gòu)造:ALGraph數(shù)據(jù)對象 V:V 是具有相同特性的數(shù)據(jù)元素的集合, 稱為點(diǎn)集 .數(shù)據(jù)關(guān)系 R:R=VRVR=(v,w)|v,w屬于 V,(v,w) 表示 v 和 w之間存在的路徑B隊(duì)列的算法構(gòu)造:1. Init_SeqQueue()操作結(jié)果 : 構(gòu)造一個空隊(duì)列Q2. DestryoQueue

41、(&Q)初始條件:隊(duì)列 Q已存在。操作結(jié)果:隊(duì)列 Q被銷毀,不再存在。3. In_SeqQueue()初始條件 : 隊(duì)列 Q已經(jīng)存在操作結(jié)果 : 插入元素 e 為 Q的新的隊(duì)尾元素4. Out_SeqQueue()初始條件 :Q 為非空隊(duì)列操作結(jié)果 : 刪除 Q的隊(duì)尾元素 , 并用 e 返回其值5. Empty_SeqQueue()初始條件 : 隊(duì)列已經(jīng)存在操作結(jié)果 : 若隊(duì)列為空 , 則返回 TRUE,否則返回 FLASEC本程序包含的模板:1. 程序模塊Main()取得頂點(diǎn)數(shù)和弧數(shù);生成鄰接表結(jié)構(gòu)的圖;深度遍歷圖;廣度遍歷圖;2造鄰接表結(jié)構(gòu)的圖;3度優(yōu)先遍歷圖;4度優(yōu)先遍歷圖;5列

42、的基本操作模塊;6數(shù)聲明模塊;三 .源程序代碼: (VC+6.0 下運(yùn)行 )#include<stdio.h>#include<stdlib.h>#include<string.h>#defineMAX_VERTEX_NUM 50/ 圖的最大頂點(diǎn)數(shù)#defineMAXQSIZE 200 / 隊(duì)列的最大容量enum BOOL False,True;/ 定義枚舉變量typedefstructArcNode/ 圖的鄰接表存儲 int adjvex;/ 該弧所指向的頂點(diǎn)的位置structArcNode *nextarc;/ 指向下一條弧的指針ArcNode; / 弧結(jié)點(diǎn)typedefstructArcNode* A

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論