資料結構課設作業

2021-03-04 09:14:22 字數 3100 閱讀 8530

利用佇列求解迷宮路徑。

利用檔案的輸入輸出、查詢排序演算法建立乙個航班資訊順序表查詢系統。

1.2.1迷宮問題

本程式用以求出任意輸入的入口和出口間的最短路徑和最長路徑。

1.2.2航班息查詢系統設計

建立乙個順序表航班資訊查詢系統,用於管理和使用。

m=12,n=12,move[4]

vg1034 山東湖北 2 14:23 15:45 mnbh 1345

v1209 北京河北 1 12:12 13:13 xcdg 1234

m1001 北京河北 1 12:20 13:35 mjef 1200

cz3528 成都武漢 1.2 19:19 19:59 mngh 1123

設迷宮有m行n列,利用迷宮陣列maze[m+2][n+2]來表示乙個迷宮,迷宮四周的值都為1,其中0表示通路,1表示不通。當從某點向下試探時,中間點有4個方向可以試探。其中,迷宮要隨機生成,求路徑時不能使用遞迴演算法,入口和出口由鍵盤輸入。

查詢資訊包括航班號、起點站、終點站、起飛時間、到達時間、班期、機型和票價。航班號是字串行,具體資訊上網查詢;起點站、終點站、機型、班期等都是字串;起飛時間和到達時間都可以用時分組成的序列;票價是整型數,具體資訊上網查詢。原有資訊儲存在檔案中;使用者介面包括建立、修改、查詢、瀏覽和退出系統等功能;修改又包括插入、新增、刪除和更新功能。

建立是指從檔案中讀取資訊,並存入所定義的順序表中;可按航班號、起點站、終點站、起飛時間、到達時間等進行查詢。查詢時要用到順序查詢、二分查詢方法。輸出查詢結果時必須排序;按航班號、起點站、起飛時間、票價進行刪除和更新操作,刪除的記錄存入另外的檔案中,作為日誌檔案儲存;作插入操作前,先對資訊按起點站進行排序。

新記錄插入為起點站相同的最後一條記錄。

程式執行後顯現提示資訊,由使用者輸入乙個整數,接著輸入迷宮的入口和出口。

程式執行後顯現提示資訊,由使用者輸入要輸入的操作專案號碼,注意按提示要求輸入。

使用者輸入資料完畢,程式將輸出運算結果。

使用者輸入資料完畢,程式將輸出運算結果。

測試資料應為4個整數,範圍在1到10之間。

測試資料在輸入時應注意提示資訊是什麼,如字母要大寫等等。

為實現上程式功能,用佇列來實現迷宮路徑的求解。為此需要move陣列和佇列兩個抽象資料型別。

1.move陣列的抽象資料型別定義

typedef struct//定義move陣列

{int x,y;//橫縱座標

int d ;//方向

}2.佇列的抽象資料型別定義

typedef struct //定義佇列

{datatype data[maxsize];

int x,y,d;

int front,rear;

int num;

}sqtype;

為實現以上程式功能,用順序表來實現航班資訊的儲存。為此需要slnode和順序表兩個抽象資料型別

1.slnode的抽象型別定義

typedef struct

slnode;

2.有序表的抽象型別定義

typedef struct

list;

本程式包含主程式、求解路徑單元模組和佇列單元模組等三個模組。

求解路徑單元模組實現尋找路徑功能。

佇列單元模組實現佇列的抽象資料型別,包含結點和指標的定義。

三個模組間的呼叫關係如圖3-1所示

圖3-1 單元模組呼叫關係

本程式包含主程式、有序表單元模組等兩個模組。

有序表單元模組實現修改、查詢和瀏覽功能,模組間的呼叫關係如圖3-2所示

圖3-2 模組呼叫關係

typedef struct//定義move 陣列

item;

2.佇列的型別

typedef int datatype;

typedef struct//定義佇列

sqtype;

部分基本操作實現的偽碼演算法如下:

void zidong_maze(int maze[m][n])//自動生成迷宮

}…………(其餘見附錄**)

sqtype *init_sqtype()//佇列初始化

void main()

1.有序表型別定義

typedef struct

list;

2.元素型別定義

typedef struct

slnode;

3.部分函式定義

void bubble_sort3(list &l)//票價排序

}4.主函式**

(見附錄)

函式間的呼叫關係如圖4-1所示。

圖4-1函式間的呼叫關係

圖4-2函式間的呼叫關係

程式中將指標的操作封裝在佇列的型別中,在求解路徑的模組中,只須引用佇列的操作實現相應的路徑演算法即可,從而使求解路徑模組的除錯比較方便。

程式中將有序表陣列封鎖在有序表型別中,在對航班資訊進行各種操作時,只需引用有序表的操作實現相應的演算法操作,從而使設計達到應有的功能。

5.2.2航班資訊查詢系統設計

由於有序表採用無頭結點的順序表,並增設有序表長度標識,各種操作的演算法時間複雜度比較合理,init_list、print_maze、inser_list及delete_list等操作的時間複雜度均為o(n),其中n為有序表的長度。

程式執行後使用者根據提示輸入要進行的操作選項(應先選擇自動生成迷宮),然後選擇是求最短路徑還是最長路徑,輸入入口和出口座標時,元素之間以空格隔開。程式將按進出口座標元素找到最短或最長路徑,然後列印在螢幕上。

程式執行後使用者根據提示輸入要進行的操作選項(應先選擇建立選項,這樣可以直接讀取儲存好的檔案),然後選擇要進行的操作選項。由於主選單中有修改、查詢和瀏覽專案,每個專案又有各自的子選單,所以在進行管理和使用時要注意輸入的元素是否正確,需按照提示輸入。輸入操作元素時,元素之間以空格隔開。

程式將按輸入的操作元素找到相應的演算法,然後進行處理,然後將結果列印在螢幕上。

使用兩組資料進行測試。

圖7-1-1 自動建立迷宮圖形1

圖7-1-2 求迷宮的最短路徑

圖7-1-3 求迷宮最長路徑

圖7-1-4 退出迷宮系統

第二組資料

圖7-1-5 自動建立迷宮圖形2

圖7-1-6 迷宮最短路徑

資料結構課設分組

汗水和豐收是忠實的朋友,勤學和知識是一對最美麗的戀人。注意 1綠色 劉志偉,class txt 2紅色 宋文,class txt 3藍色 嚴常龍,135 class txt 200509010601 邱程電腦科學與技術 計算機應用軟體 計算機應用 軟體 05 11 31200713 許令 資訊與計算...

資料結構課設選題

26 紙牌遊戲 21點 21點 是一種古老的撲克牌遊戲,遊戲規則是,各個參與者設法使自己的牌達到總分21而不超過這個數值。撲克牌的分值取它們的面值,a充當1分或者11分 由玩家自己確定選擇一種分值 j,q和k人頭牌都是10分。莊家對付1 7個玩家。在一局開始時,包括莊家在內的所有參與者都有兩張牌。玩...

資料結構課設1

南通大學電腦科學 與技術學院 資料結構課程設計 班級 軟體外包111 學號 1113122001 姓名 張艷嬌 通訊錄管理系統的設計與實現 班級 軟外111學號 1113122001姓名 張艷嬌 一需求分析 通訊錄是用來記載和查詢聯絡人通訊資訊的工具。電子通訊錄已成為手機 電子詞典等電子裝置中不可缺...