




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、set talk on33. 修改本地視圖使用的命令是_。一、填空(每空1分,總計30分)C. VFP基類的事件也可以由用戶創(chuàng)建【答案】B【答案】6位【答案】C【答案】Dinput"請輸入第二個數(shù):" to bC. 只能根據(jù)數(shù)據(jù)庫表建立視圖 D. 可以根據(jù)數(shù)據(jù)庫表和自由表建立視圖重慶大學(xué)課程設(shè)計報告課程設(shè)計題目:數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計學(xué)院:軟件學(xué)院 專業(yè):軟件工程 年級:2014級 學(xué)生:李慶(組長) 唐天 吳東 學(xué)號:20141766(李) 20141779(唐) 20141765(吳)完成時間:2015年12月30日 成績:指導(dǎo)教師:蔡斌重慶大學(xué)教務(wù)處制課程設(shè)計指導(dǎo)教師
2、評定成績表項目分值優(yōu)秀(100>x90)良好(90>x80)中等(80>x70)及格(70>x60)不及格(x<60)評分參考標(biāo)準(zhǔn)參考標(biāo)準(zhǔn)參考標(biāo)準(zhǔn)參考標(biāo)準(zhǔn)參考標(biāo)準(zhǔn)學(xué)習(xí)態(tài)度15學(xué)習(xí)態(tài)度認(rèn)真,科學(xué)作風(fēng)嚴(yán)謹(jǐn),嚴(yán)格保證設(shè)計時間并按任務(wù)書中規(guī)定的進(jìn)度開展各項工作學(xué)習(xí)態(tài)度比較認(rèn)真,科學(xué)作風(fēng)良好,能按期圓滿完成任務(wù)書規(guī)定的任務(wù)學(xué)習(xí)態(tài)度尚好,遵守組織紀(jì)律,基本保證設(shè)計時間,按期完成各項工作學(xué)習(xí)態(tài)度尚可,能遵守組織紀(jì)律,能按期完成任務(wù)學(xué)習(xí)馬虎,紀(jì)律渙散,工作作風(fēng)不嚴(yán)謹(jǐn),不能保證設(shè)計時間和進(jìn)度技術(shù)水平與實(shí)際能力25設(shè)計合理、理論分析與計算正確,實(shí)驗數(shù)據(jù)準(zhǔn)確,有很強(qiáng)的實(shí)際動手能力、經(jīng)濟(jì)
3、分析能力和計算機(jī)應(yīng)用能力,文獻(xiàn)查閱能力強(qiáng)、引用合理、調(diào)查調(diào)研非常合理、可信設(shè)計合理、理論分析與計算正確,實(shí)驗數(shù)據(jù)比較準(zhǔn)確,有較強(qiáng)的實(shí)際動手能力、經(jīng)濟(jì)分析能力和計算機(jī)應(yīng)用能力,文獻(xiàn)引用、調(diào)查調(diào)研比較合理、可信設(shè)計合理,理論分析與計算基本正確,實(shí)驗數(shù)據(jù)比較準(zhǔn)確,有一定的實(shí)際動手能力,主要文獻(xiàn)引用、調(diào)查調(diào)研比較可信設(shè)計基本合理,理論分析與計算無大錯,實(shí)驗數(shù)據(jù)無大錯設(shè)計不合理,理論分析與計算有原則錯誤,實(shí)驗數(shù)據(jù)不可靠,實(shí)際動手能力差,文獻(xiàn)引用、調(diào)查調(diào)研有較大的問題創(chuàng)新10有重大改進(jìn)或獨(dú)特見解,有一定實(shí)用價值有較大改進(jìn)或新穎的見解,實(shí)用性尚可有一定改進(jìn)或新的見解有一定見解觀念陳舊論文(計算書、圖紙)撰寫
4、質(zhì)量50結(jié)構(gòu)嚴(yán)謹(jǐn),邏輯性強(qiáng),層次清晰,語言準(zhǔn)確,文字流暢,完全符合規(guī)范化要求,書寫工整或用計算機(jī)打印成文;圖紙非常工整、清晰結(jié)構(gòu)合理,符合邏輯,文章層次分明,語言準(zhǔn)確,文字流暢,符合規(guī)范化要求,書寫工整或用計算機(jī)打印成文;圖紙工整、清晰結(jié)構(gòu)合理,層次較為分明,文理通順,基本達(dá)到規(guī)范化要求,書寫比較工整;圖紙比較工整、清晰結(jié)構(gòu)基本合理,邏輯基本清楚,文字尚通順,勉強(qiáng)達(dá)到規(guī)范化要求;圖紙比較工整內(nèi)容空泛,結(jié)構(gòu)混亂,文字表達(dá)不清,錯別字較多,達(dá)不到規(guī)范化要求;圖紙不工整或不清晰指導(dǎo)教師評定成績:指導(dǎo)教師簽名: 年 月 日重慶大學(xué)本科學(xué)生課程設(shè)計任務(wù)書課程設(shè)計題目回文判斷學(xué)院軟件學(xué)院專業(yè)軟件工程年級2
5、014已知參數(shù)和設(shè)計要求:問題描述試寫一個算法,判斷依次讀入的一個以為結(jié)束符的字母序列,是否為形如序列1&序列2模式的字符序列。其中序列1和序列2中都不含字符&,且序列2是序列1的逆序列。例如,a+b&b+a是屬該模式的字符序列,而+&則不是。學(xué)生應(yīng)完成的工作:實(shí)現(xiàn)提示首先,序列1進(jìn)棧,然后序列1出棧并與序列2比較。測試數(shù)據(jù)由學(xué)生依據(jù)軟件工程的測試技術(shù)自己確定。注意測試邊界數(shù)據(jù),如序列1和序列2均為空串。目前資料收集情況(含指定參考資料):1. Robert L. Kruse編. Data Structures and Program Design in C+.
6、高等教育出版社,2001.2.數(shù)據(jù)結(jié)構(gòu)嚴(yán)蔚敏編,清華大學(xué)出版社,2000.3.數(shù)據(jù)結(jié)構(gòu)教程李春葆編,清華大學(xué)出版社,2002.課程設(shè)計的工作計劃:本課題由唐天同學(xué)獨(dú)立完成,第一天由其編寫全部代碼第二天小組測試,討論,修改。最終完成此任務(wù)任務(wù)下達(dá)日期 2015年 11月 10日完成日期 2015年 12月 30日指導(dǎo)教師 (簽名)學(xué) 生 (簽名)說明:1、學(xué)院、專業(yè)、年級均填全稱,如:光電工程學(xué)院、測控技術(shù)、2003。2、本表除簽名外均可采用計算機(jī)打印。本表不夠,可另附頁,但應(yīng)在頁腳添加頁碼。重慶大學(xué)本科學(xué)生課程設(shè)計任務(wù)書課程設(shè)計題目推銷員問題學(xué)院軟件學(xué)院專業(yè)軟件工程年級2014已知參數(shù)和設(shè)計要
7、求:問題描述有一個推銷員要到N(N>0)個城市去推銷產(chǎn)品,他從某個城市出發(fā),經(jīng)歷每個城市,且每個城市只能去一次,然后回到初始城市,以距離作為代價,他希望找出一個最佳路徑。這N個城市相互都有道路可通,但距離各不相同,城市個數(shù)和各個城市的相通距離可由學(xué)生自己設(shè)定。學(xué)生應(yīng)完成的工作:基本要求(1)可以輸入城市個數(shù)(不少于10個)、輸入城市信息和城市之間的距離(為整數(shù));(2)按照輸入出發(fā)城市,根據(jù)城市的距離最短給出路徑選擇。(3)界面要求:有合理的提示和人機(jī)交互。目前資料收集情況(含指定參考資料):1. Robert L. Kruse編. Data Structures and Program
8、 Design in C+.高等教育出版社,2001.2.數(shù)據(jù)結(jié)構(gòu)嚴(yán)蔚敏編,清華大學(xué)出版社,2000.3.數(shù)據(jù)結(jié)構(gòu)教程李春葆編,清華大學(xué)出版社,2002.課程設(shè)計的工作計劃:本課題由吳東同學(xué)獨(dú)立完成。第一期(11.10-11.20):接受課程任務(wù),完成選題,并對任務(wù)初步了解;第二期(11.21-12.10):收集相關(guān)資料和復(fù)習(xí)基礎(chǔ)專業(yè)知識,初步完成設(shè)計;第三期(12.11-12.20):對課程設(shè)計進(jìn)行最終實(shí)驗;第四期(12.21-12.30):整理并完善課程設(shè)計報告。任務(wù)下達(dá)日期 2015年 11月 10日完成日期 2015年 12月 30日指導(dǎo)教師 (簽名)學(xué) 生 (簽名)說明:1、學(xué)院、專
9、業(yè)、年級均填全稱,如:光電工程學(xué)院、測控技術(shù)、2003。2、本表除簽名外均可采用計算機(jī)打印。本表不夠,可另附頁,但應(yīng)在頁腳添加頁碼。重慶大學(xué)本科學(xué)生課程設(shè)計任務(wù)書課程設(shè)計題目文學(xué)研究助手學(xué)院軟件學(xué)院專業(yè)軟件學(xué)院年級2015已知參數(shù)和設(shè)計要求:問題描述文學(xué)研究人員需要統(tǒng)計某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置。試寫一個實(shí)現(xiàn)這一目標(biāo)的文字統(tǒng)計系統(tǒng),稱為“文學(xué)研究助手”。學(xué)生應(yīng)完成的工作:基本要求英文小說存于一個文本文件中。待統(tǒng)計的詞匯集合要一次輸入完畢,即統(tǒng)計工作必須在程序的一次運(yùn)行之后就全部完成。程序的輸出結(jié)果是每個詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在行的行號,格式自行設(shè)計。測試數(shù)據(jù)以你的源程序模擬英文
10、小說,程序語言保留字集作為待統(tǒng)計的詞匯集。實(shí)現(xiàn)提示設(shè)小說中的詞匯一律不跨行。這樣,每讀入一行,就統(tǒng)計每個詞在這行中的出現(xiàn)次數(shù)。出現(xiàn)位置所在行的行號可以用鏈表存儲。若某行中出現(xiàn)了不止一次,不必存多個相同的行號。目前資料收集情況(含指定參考資料):1. Robert L. Kruse編. Data Structures and Program Design in C+.高等教育出版社,2001.2.數(shù)據(jù)結(jié)構(gòu)嚴(yán)蔚敏編,清華大學(xué)出版社,2000.3.數(shù)據(jù)結(jié)構(gòu)教程李春葆編,清華大學(xué)出版社,2002.課程設(shè)計的工作計劃:本課題由李慶同學(xué)獨(dú)立完成,包括繪制程序邏輯圖,設(shè)計算法,實(shí)現(xiàn)算法,撰寫論文。任務(wù)下達(dá)日
11、期 2015年 11月 10日完成日期 2015年 12月 30日指導(dǎo)教師 (簽名)學(xué) 生 (簽名)說明:1、學(xué)院、專業(yè)、年級均填全稱,如:光電工程學(xué)院、測控技術(shù)、2003。2、本表除簽名外均可采用計算機(jī)打印。本表不夠,可另附頁,但應(yīng)在頁腳添加頁碼。摘要本課程設(shè)計實(shí)驗報告共解決3個問題,解決過程中涉及到大部分主流數(shù)據(jù)結(jié)構(gòu)算法。其中主要有棧,遞歸算法,串的應(yīng)用,圖,圖實(shí)現(xiàn)的深度和廣度遍歷。1) 回文判斷將字符串按照用戶輸入的順序分別入棧和隊列,然后二者進(jìn)行比較。根據(jù)比較結(jié)果判斷序列是否為回文。2)推銷員問題該問題通過A*算法選擇出最短路徑,通過一個打開的列表,保存了打開節(jié)點(diǎn)的一個值記為F;每次從
12、中取最小F值的節(jié)點(diǎn)打開下批子節(jié)點(diǎn);一個關(guān)閉列表,將已展開的節(jié)點(diǎn)加入其中。3)文學(xué)助手 該問題主要是利用數(shù)據(jù)結(jié)構(gòu)中串和棧知識,核心思想是串的模式匹配算法,采用易于理解且設(shè)計簡單的串的樸素模式匹配算法,利用堆棧存儲匹配字符串的位置。關(guān)鍵字:程序設(shè)計,數(shù)據(jù)結(jié)構(gòu)與算法,順序棧,隊列,最短路徑,模式匹配,商旅問題,圖論關(guān)于回文判斷 (1)問題描述試寫一個算法,判斷依次讀入的一個以為結(jié)束符的字母序列,是否為形如序列1&序列2模式的字符序列。其中序列1和序列2中都不含字符&,且序列2是序列1的逆序列。例如,a+b&b+a是屬該模式的字符序列,而+&則不是。 (2)基本要求 序
13、列1進(jìn)棧,然后序列1出棧并與序列2比較。根據(jù)序列1與序列2比較結(jié)果判斷序列是否為回文。 (3)算法思想1.數(shù)據(jù)結(jié)構(gòu):typedef struct char itemSTACKSIZE; int top;SqStack;使用結(jié)構(gòu)體,內(nèi)部定義數(shù)組模擬棧。top為棧頂指針,指向當(dāng)前元素的下一個位置,itemSTACKSIZE表示棧內(nèi)的元素個數(shù)。2.函數(shù)介紹:int InitStack(SqStack *S) /棧的初始化int Push(SqStack *s, char data) /入棧int Pop(SqStack *s, char *data) /出棧3.程序流程:1)將字符串按照用戶輸入的順
14、序分別入棧和隊列 2)分別從隊列和棧中取出首個字符 3)比較取出的字符,若相等,繼續(xù)分別從隊列和棧中取首個字符;否則跳出循環(huán),并設(shè)置標(biāo)志; 4)若隊列和棧中的字符取完,則結(jié)束,設(shè)置標(biāo)志為真; 5)標(biāo)志為真,表示字符從前往后和從后往前的序列完全匹配,該字符串屬于回文 6)標(biāo)志為假,表示字符從前往后和從后往前的序列不完全匹配,該字符串不屬于回文 (4)模塊劃分int InitStack(SqStack *S) /棧的初始化int Push(SqStack *s, char data) /入棧int Pop(SqStack *s, cha
15、r *data) /出棧 (5)數(shù)據(jù)結(jié)構(gòu)typedef struct char itemSTACKSIZE; int top;typedef struct QNode char data; struct QNode *next;typedef struct PQNode front,rear; (6)源程序#include <stdio.h>#include <stdlib.h>#include <string.h>#define STACKSIZE 1000typedef struct char itemSTACKSIZE; int top;SqStack
16、;typedef struct QNode char data; struct QNode *next;LQNode, *PQNode;typedef struct PQNode front,rear; LinkQueue;int InitStack(SqStack *S) S->top = -1; return 1;int StackEmpty(SqStack S) if(S.top = -1) return 1; else return 0;int Push(SqStack *s, char data) if(s->top = STACKSIZE - 1) printf(&qu
17、ot;n棧已滿,不能再進(jìn)行入棧操作"); return 0; s->top+; s->items->top = data; return 1;int Pop(SqStack *s, char *data) if (s->top = -1) / printf("n堆棧已空,不能再進(jìn)行出棧操作"); return 0; *data = s->items->top; s->top-; return 1;int InitQueue(LinkQueue *q) q->front = q->rear = (PQNode)m
18、alloc(sizeof(LQNode); if(!q->front)printf("n初始化隊列失敗");return 0; q->front->next = NULL; return 1;int QueueEmpty(LinkQueue q) if (q.front = q.rear) printf("n隊列為空"); return 1; else return 0;int EnQueue(LinkQueue *q, char item) PQNode p; p = (PQNode)malloc(sizeof(LQNode); if
19、(!p) printf("n內(nèi)存分配失敗"); return 0; p->data = item; p->next = NULL; q->rear->next = p; q->rear = p; return 1;int DeQueue(LinkQueue *q, char *item) PQNode p; if(q->front = q->rear) / printf("n隊列已空,不能出隊"); return 0; p = q->front->next; *item = p->data; q
20、->front->next = p->next; free(p); if(q->rear = p) /*若刪除的為最后一個結(jié)點(diǎn),移動隊尾指針*/ q->front = q->rear; return 1;int PutOutQueue(LinkQueue q) PQNode pos; if(q.front = q.rear) printf("n隊列為空"); return 0; pos = q.front->next; /* printf("nHere is the string:"); while(pos !=
21、 NULL) printf("%c", pos->data); pos = pos->next; printf("n");*/ return 1;int main(void) int i,len,count1 = 0; char str1100,ch,ch1; LinkQueue lq1,lq2; SqStack sq; printf("請輸入一個字符串:"); scanf("%s", &str1); len = strlen(str1); InitQueue(&lq1); InitQu
22、eue(&lq2); InitStack(&sq);if(str1len-1='') for(i=0;i<len-1;i+) EnQueue(&lq1,str1i); PutOutQueue(lq1); for(i=0;i<len-1;i+) DeQueue(&lq1,&ch); Push(&sq,ch); EnQueue(&lq1,ch); for(i=0;i<len;i+) Pop(&sq,&ch); EnQueue(&lq2,ch); PutOutQueue(lq2); fo
23、r(i=0;i<len;i+) DeQueue(&lq1,&ch); DeQueue(&lq2,&ch1);if(ch1 != ch) count1+; elseprintf("請以結(jié)尾。");return 0; if(count1 = 0) printf("n該字符串為回文"); else printf("n該字符串不是回文"); return 0; (7)測試數(shù)據(jù)測試4組數(shù)據(jù): 1. 123456789&987654321 2. 12+3&3-12 3. 213123&
24、23 4. abc&cba (8)測試情況該數(shù)據(jù)表示一般情況,以結(jié)尾的一般字符串該數(shù)據(jù)表示含有符號的以結(jié)尾的字符串該數(shù)據(jù)表示不以結(jié)尾的字符串該數(shù)據(jù)表示含英文字母的字符串關(guān)于推銷員問題 (1)問題描述有一個推銷員要到N(N>0)個城市去推銷產(chǎn)品,他從某個城市出發(fā),經(jīng)歷每個城市,且每個城市只能去一次,然后回到初始城市,以距離作為代價,他希望找出一個最佳路徑。這N個城市相互都有道路可通,但距離各不相同,城市個數(shù)和各個城市的相通距離可由自行設(shè)定。 (2)基本要求:(1)可以輸入城市個數(shù)(不少于10個)、輸入城市信息和城市之間的距離(為整數(shù));(2)按照輸入出發(fā)城市,根據(jù)城市的距離最短給出
25、路徑選擇。(3)界面要求:有合理的提示和人機(jī)交互。 (3)算法思想:在這個問題的具體解決過程中,我們可以使用A*算法。A*算法是N.Nillson于1971年提出的一種有序搜索算法,該算法被認(rèn)為是求解人工智能問題的最成功的技術(shù)理論之一。Nillson指出對于某一已到達(dá)的現(xiàn)行狀態(tài),如已到達(dá)圖中的n節(jié)點(diǎn),它是否可能成為最佳路徑上的一點(diǎn)的估價,應(yīng)由估價函數(shù)f(n)值來決定。假設(shè)g*(n)函數(shù)值表示從起始節(jié)點(diǎn)s到任意一個節(jié)點(diǎn)n的一條最佳路徑上的實(shí)際耗散值。h*(n)函數(shù)值表示從任意節(jié)點(diǎn)n到目標(biāo)節(jié)點(diǎn)ti的最佳路徑的實(shí)際耗散值。其中ti是一個可能的目標(biāo)節(jié)點(diǎn)。f*(n)函數(shù)值表示從起始s,通過某一指定的n到
26、達(dá)目標(biāo)節(jié)點(diǎn)ti的一條最佳路徑的實(shí)際耗散值,并有f*(n)=g*(n)+h*(n)。假設(shè)f 函數(shù)是對f* 函數(shù)的一種估計,并有f(n)=g(n)+h(n),其中g(shù)函數(shù)是對g*的估計,h 函數(shù)是對h*的一種估計。f( n)包括兩個部分,其中g(shù)(n)表示到達(dá)n節(jié)點(diǎn)時,已付出代價的估計;而h(n)表示從n節(jié)點(diǎn)到達(dá)目標(biāo)節(jié)點(diǎn)ti將要付出代價的估計。按f(n)=g*(n)+h*(n)的值來排序OPEN表的節(jié)點(diǎn),f值小者優(yōu)先。通常稱這種算法為A算法。在A 算法的基礎(chǔ)上,進(jìn)一步限制h(n)函數(shù),使得搜索圖中的每一個節(jié)點(diǎn)n,能滿足h(n)<=h*(n)、稱h函數(shù)取h*
27、的下界。這種算法叫A*算法。 (4)模塊劃分:ttable *table_constructor()構(gòu)造一個table實(shí)體void *table_destructor(ttable * table)析構(gòu)一個類nodeptr _add_to_open(int i)將節(jié)點(diǎn)添加到OPEN表void _add_to_close(nodeptr ptr)將節(jié)點(diǎn)添加到CLOSE表nodeptr _remove_from_open(nodeptr ptr)將節(jié)點(diǎn)從OPEN表中移除,不刪除nodeptr _find_least_f()在OPEN表中找出最小的F節(jié)點(diǎn)void _move_to_close(nod
28、eptr ptr)將節(jié)點(diǎn)從OPEN移到CLOSEint main()輸入節(jié)點(diǎn)并運(yùn)算void _print_path(nodeptr ptr)打印最終路徑 (5)數(shù)據(jù)結(jié)構(gòu):typedef struct _node int f; /f值int g; /g值int h; /h值int level; /第幾次走到這個點(diǎn)(important)int parent; /父城市;int city; /city num; node;使用node結(jié)構(gòu)體表述每一個城市。typedef struct _list struct _list *next;struct _list *pre;struct _list *p
29、arent; /父城市節(jié)點(diǎn)指針node city_node; nodelist, *nodeptr;使用nodelist, *nodeptr描述路徑,城市結(jié)點(diǎn)與城市結(jié)點(diǎn)的關(guān)系。typedef struct _ttable struct _ttable *_this; /this 指針nodelist open; /open表,nodelist close; /close表,(倉庫)/一些操作nodeptr(*add_to_open) (int);nodeptr(*find_least_f) (void);void(*move_to_close) (nodeptr ptr);void(*prin
30、t_path) (nodeptr ptr); ttable;Ttable相當(dāng)一個總表,相當(dāng)于面向?qū)ο蟮囊粋€類,成員變量有OPEN表和CLOSE表,成員函數(shù)有nodeptr(*add_to_open) (int)、nodeptr(*find_least_f) (void)、void(*move_to_close) (nodeptr ptr)、void(*print_path) (nodeptr ptr)。 (6)源程序:#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <me
31、mory.h>#define MAX_INT 99999999typedef struct _node int f;/f值int g;/g值int h;/h值int level;/第幾次走到這個點(diǎn)(important)int parent;/父城市;int city;/city num; node;typedef struct _list struct _list *next;struct _list *pre;struct _list *parent; /父城市節(jié)點(diǎn)指針node city_node;nodelist, *nodeptr;nodeptr _add_to_open(int)
32、;nodeptr _find_least_f();void _print_path(nodeptr ptr);void _move_to_close(nodeptr ptr);nodeptr _remove_from_open(nodeptr ptr);void _add_to_close(nodeptr ptr);typedef struct _ttable struct _ttable *_this;/this 指針nodelist open;/open表,nodelist close;/close表,(倉庫)/一些的操作nodeptr(*add_to_open) (int);nodept
33、r(*find_least_f) (void);void(*move_to_close) (nodeptr ptr);void(*print_path) (nodeptr ptr); ttable;int map100100;int b_path100;/best_path;ttable *table = NULL;ttable *table_constructor()/構(gòu)造一個table實(shí)體table = (ttable *)malloc(sizeof(ttable);memset(table, 0, sizeof(ttable);table->open.next = NULL;tab
34、le->close.next = NULL;table->open.city_node.parent = -1;table->open.city_node.city = -1;table->close.city_node.parent = -1;table->close.city_node.city = -1;table->add_to_open = _add_to_open;table->find_least_f = _find_least_f;table->move_to_close = _move_to_close;table->pr
35、int_path = _print_path;table->_this = table;return table;void *table_destructor(ttable * table)/析構(gòu)一個類if (table != NULL) nodeptr p = table->_this->open.next;nodeptr q = NULL;while (p) q = p->next;free(p);p = q;p = table->_this->close.next;while (p) q = p->next;free(p);p = q;free(
36、table);table = NULL;nodeptr _add_to_open(int i)/添加到OPEN表/放在第一個位置nodeptr p = NULL;p = (nodeptr)malloc(sizeof(nodelist);memset(p, 0, sizeof(nodelist);if (p = NULL) return p;p->next = NULL;p->parent = NULL;p->city_node.parent = -1;p->city_node.city = i;p->city_node.level = 0;p->city_n
37、ode.f = 0;p->city_node.g = 0;p->city_node.h = 0;p->next = table->_this->open.next;p->pre = &table->_this->open;if (table->_this->open.next) table->_this->open.next->pre = p;table->_this->open.next = p;return p;void _add_to_close(nodeptr ptr)/添加到close表
38、ptr->next = table->_this->close.next;ptr->pre = &table->_this->close;if (table->_this->close.next) table->_this->close.next->pre = ptr;table->_this->close.next = ptr;nodeptr _remove_from_open(nodeptr ptr)/從OPEN表中移除,不刪除ptr->pre->next = ptr->next;if
39、(ptr->next)ptr->next->pre = ptr->pre;return ptr;nodeptr _find_least_f()/在OPEN表中找出最小的F節(jié)點(diǎn)int least = MAX_INT;nodeptr p, q = NULL;p = table->_this->open.next;q = p;while (p) if (p->city_node.f < least) q = p;least = p->city_node.f;p = p->next;return q;void _move_to_close(n
40、odeptr ptr)/從OPEN移到CLOSE_remove_from_open(ptr);_add_to_close(ptr);int main()int num, min = MAX_INT;int i, j, k, count;int tmpf, tmph, tmpg;ttable *table = (ttable *)table_constructor(); / 構(gòu)造nodeptr ptr = NULL, ptr_p = NULL, ptr_c = NULL;nodeptr l_ptr = NULL;/the pointer of last best path;/input citi
41、esdo printf("請輸入城市節(jié)點(diǎn)個數(shù)n,2<=n<99:n");scanf_s("%d", &num); while (num >= 99 | num <= 1);printf("請輸入各節(jié)點(diǎn)之間的距離矩陣n以第一個節(jié)點(diǎn)為出發(fā)城市:n");for (i = 0; i < num; i+) for (j = 0; j < num; j+) scanf_s("%d", &mapij);if (i != j && min > mapij)
42、min = mapij;/最后回到Amapnumnum = map00;for (i = 0; i < num; i+) mapnumi = map0i;mapinum = mapi0;table->add_to_open(0);while (1) ptr_p = table->find_least_f();/'當(dāng)前'最好節(jié)點(diǎn),從最好節(jié)點(diǎn)回退肯定是最好路徑table->move_to_close(ptr_p);/move to close table and save it;if (l_ptr && l_ptr != ptr_p) /更新
43、最好路徑while (l_ptr != NULL) b_pathl_ptr->city_node.city = 0;l_ptr = l_ptr->parent;l_ptr = ptr_p;while (l_ptr != NULL) b_pathl_ptr->city_node.city = 1;l_ptr = l_ptr->parent;l_ptr = ptr_p;for (i = 0, count = 0; i <= num; i+) if (b_pathi)count+;if (count = num + 1) /all city in best path,A
44、 in twice:First And Last.break;if (count = num) /left one,which ? Last A.Because we have never changed the value of b_pathnum.ptr_c = table->add_to_open(num); /把它添加進(jìn)開啟列表中 ptr_c->city_node.parent = ptr_p->city_node.city;/把當(dāng)前作為這的父節(jié)點(diǎn)ptr_c->city_node.level = ptr_p->city_node.level + 1;/他是
45、父節(jié)點(diǎn)的下一層。ptr_c->parent = ptr_p;ptr_c->city_node.g = ptr_p->city_node.g + mapnumptr_p->city_node.city;/gptr_c->city_node.h = min * (num - ptr_c->city_node.level);/hptr_c->city_node.f = ptr_c->city_node.g + ptr_c->city_node.h;/felse for (i = 0; i < num; i+) /對鄰近的路徑計算if (i
46、!= ptr_p->city_node.city&& mapij != -1) if (!b_pathi) /如果它不在'最短路徑'中 ptr_c = table->add_to_open(i); /把它添加進(jìn)開啟列表中ptr_c->city_node.parent = ptr_p->city_node.city;/把當(dāng)前作為這的父節(jié)點(diǎn)ptr_c->city_node.level = ptr_p->city_node.level + 1;/他是父節(jié)點(diǎn)的下一層。ptr_c->parent = ptr_p;ptr_c->
47、;city_node.g = ptr_p->city_node.g + mapiptr_p->city_node.city; /gptr_c->city_node.h = min * (num - ptr_c->city_node.level);/hptr_c->city_node.f = ptr_c->city_node.g + ptr_c->city_node.h;/ftable->print_path(l_ptr);table_destructor(table);return 0;void _print_path(nodeptr ptr)/
48、打印路徑int least;if (ptr = NULL)return;least = ptr->city_node.f;printf("The best path is :");printf("A ");ptr = ptr->parent;while (ptr) printf("%c ", ptr->city_node.city + 65);ptr = ptr->parent;printf("nThe shortest length is %dn", least); (7)測試數(shù)據(jù): 測試
49、數(shù)據(jù)為十個城市兩兩之間的距離矩陣,其中設(shè)定A為初始城市:ABCDEFGHIJA0260330610770900580650770920B26005206206006906209209801160C330520043010901210880640860930D6106204300122013001180108013001370E770600109012100190500122011501400F900690121013001900700140013401590G58062088011805007000770650900H6509206401080122014007700290290I770980
50、8601300115013406502900260J92011609301370140015909002902600 (8)測試情況:1輸入城市個數(shù):2輸入各城市距離矩陣:3運(yùn)行結(jié)果:最佳路徑為:A B F E G I J H C D A最短距離為:4520 km關(guān)于文學(xué)助手(1) 問題描述:文學(xué)研究人員需要統(tǒng)計某篇英文小說中某些形容詞的出現(xiàn)次數(shù)和位置。試寫一個實(shí)現(xiàn)這一目標(biāo)的文字統(tǒng)計系統(tǒng),稱為“文學(xué)研究助手”。 (2)基本要求:1、英文小說存放在一個文本文件中;2、待統(tǒng)計的額詞匯集合要一次輸入完畢,即統(tǒng)計工作必須在程序的一次運(yùn)行后全部完成;3、程序的輸出結(jié)果是每個詞的出現(xiàn)次數(shù)和出現(xiàn)位置所在的行號;(3)算法思想:利用數(shù)據(jù)結(jié)構(gòu)中串和棧知識,結(jié)合功能強(qiáng)大的C+語言實(shí)現(xiàn)文學(xué)研究助手的設(shè)計,該應(yīng)用軟件設(shè)計的核心思想是串的模式匹配算法,采用易于理解且設(shè)計簡單的串的樸素模式匹配算法,利用堆棧存儲匹配字符串的位置。開始程序邏輯圖:輸入文章到文件中把文件中的文章傳到數(shù)組中輸入單詞m1m2。mnk=1k+mk和數(shù)組進(jìn)行kmp匹配k<=n? Y結(jié)束 Nmain()算法流程圖:HELPER()PRINT_R()Init_word (
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 循環(huán)水泵企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報告
- 中小型型鋼企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 硫化輪胎用囊式模具企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報告
- 智能紡織設(shè)備維修企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- 衛(wèi)星定位系統(tǒng)(GPS)企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略研究報告
- 人美版一年級下冊《大樹的秘密》教學(xué)設(shè)計
- 幼小銜接主題活動設(shè)計與實(shí)施
- 2025年燈具及照明裝置合作協(xié)議書
- 2025年單一稀土氧化物及鹽類合作協(xié)議書
- 2024-2025學(xué)年福州市高三年級第四次質(zhì)量檢測語文及答案
- 辦公用品供貨服務(wù)計劃方案
- GB/T 43220-2023固體生物質(zhì)燃料中砷的測定方法
- 人防工程巡查檢測投標(biāo)方案
- 云貴高原(擴(kuò)展課)-課件
- 高中校本課程-徑向切槽復(fù)合循環(huán)指令G75教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 高等數(shù)學(xué)-函數(shù)的概念課件
- 江蘇中能硅業(yè)科技發(fā)展有限公司硅烷法多晶硅產(chǎn)能替代項目環(huán)評報告
- 了不起的我課件完整版
- 油藏工程重點(diǎn)知識點(diǎn)
- 國家安全教育智慧樹知到答案章節(jié)測試2023年臨沂職業(yè)學(xué)院
- 金屬波紋管的焊接技術(shù)
評論
0/150
提交評論