freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c數(shù)據(jù)結(jié)構(gòu)算法演示系統(tǒng)-文庫(kù)吧資料

2025-06-24 15:34本頁(yè)面
  

【正文】 示。}// 4 系統(tǒng)操作 主菜單操作主菜單運(yùn)行如圖32所示。}//void __fastcall TForm1::Button1Click(TObject *Sender){Memo1LinesSaveToFile()。Memo2LinesText=。}//void __fastcall TForm1::Button2Click(TObject *Sender){Memo1LinesText=。 }//void __fastcall TForm1::N13Click(TObject *Sender){Memo1LinesLoadFromFile()。}//void __fastcall TForm1::N11Click(TObject *Sender){Memo1LinesLoadFromFile()。主要顯示各種算法的說明,輔助大家更好地學(xué)習(xí)。根據(jù)以上思想,我設(shè)計(jì)了一個(gè)查找結(jié)點(diǎn)的類別二叉樹,運(yùn)行界面如圖323所示。若限定先左后右,則只有前三種情況,分別稱之先序遍歷、中序遍歷和后序遍歷。因此,若能依次遍歷這三部分,便是遍歷了整個(gè)二叉樹。遍歷對(duì)線性結(jié)點(diǎn)來說,是容易解決的,而對(duì)二叉樹則不然,由于二叉樹是一種非線性結(jié)構(gòu),每個(gè)結(jié)點(diǎn)都可能有兩課子樹,因而需要尋找一種規(guī)律,以便使二叉樹上的結(jié)點(diǎn)能排列在一個(gè)線性隊(duì)列上,從而便于遍歷。這就提出了了一個(gè)遍歷二叉樹的問題,如果按某條搜索路徑巡訪樹中每個(gè)結(jié)點(diǎn),使得每個(gè)結(jié)點(diǎn)均被訪問一次,而且僅被訪問一次。 i=WinExec((),SW_SHOWNORMAL)。圖321結(jié)構(gòu)二叉樹的顯示圖開始構(gòu)件二叉樹顯示內(nèi)容結(jié)構(gòu)結(jié)束圖322 結(jié)構(gòu)二叉樹流程圖 (3)在菜單中,我們通過調(diào)用WinExec函數(shù),以執(zhí)行外部命令的方式,來完成類別二叉樹的演示。對(duì)于一般二叉樹,則應(yīng)將其每個(gè)結(jié)點(diǎn)與完全二叉樹上的結(jié)點(diǎn)相對(duì)照,存儲(chǔ)在一維數(shù)組的相應(yīng)分量中,如圖319所示,二叉樹的順序存儲(chǔ)結(jié)構(gòu)如圖320所示,圖中以“0”表示不存在此結(jié)點(diǎn)。 i=WinExec((),SW_SHOWNORMAL)。圖317數(shù)組二叉樹的顯示圖開始輸入內(nèi)容左子樹數(shù)字大小右子樹二叉樹形成結(jié)束圖318 數(shù)組二叉樹流程圖(2)在菜單中,我們通過調(diào)用WinExec函數(shù),以執(zhí)行外部命令的方式,來完成結(jié)構(gòu)二叉樹的演示。二叉樹是樹的一種,應(yīng)用最多也最廣,它的子接點(diǎn)最多兩個(gè),故稱為二叉樹,與一般的樹比較,二叉樹可為空,與子樹有順序關(guān)系且結(jié)點(diǎn)度數(shù)最大為2。 在數(shù)組二叉樹的實(shí)現(xiàn)中,樹是由根莖和葉構(gòu)成,顧名思義樹狀結(jié)構(gòu)也具有這樣的組成特點(diǎn)的結(jié)構(gòu)形態(tài);然而必須注意在數(shù)據(jù)結(jié)構(gòu)中,樹的生長(zhǎng)方向是向下的,而且決定延伸的環(huán)節(jié)是由結(jié)點(diǎn)和線段所組成的。源代碼如下: NewFileName=ExtractFilePath(ApplicationExeName)+。圖313和圖314分別顯示了刪除和插入結(jié)點(diǎn)時(shí)指針修改的情況。在雙向鏈表中,若d為指向表中一結(jié)點(diǎn)的指針,則顯然有dnextprior=dpriornext=d這個(gè)表示式恰當(dāng)?shù)胤从沉诉@種結(jié)構(gòu)的特性。顧名思義,在雙向鏈表的結(jié)點(diǎn)中有兩個(gè)指針域,其一指向直接后繼,另一指向直接前趨。 以上討論的鏈表存儲(chǔ)結(jié)構(gòu)的結(jié)點(diǎn)中只有一個(gè)指示直接后繼的指針域的指針域,因此,從某個(gè)結(jié)點(diǎn)結(jié)點(diǎn)出發(fā)只能順指針往后尋查其他結(jié)點(diǎn)。源代碼如下: NewFileName=ExtractFilePath(ApplicationExeName)+??梢姡谝阎湵碇性夭迦牖騽h除的確切位置的情況下,在單鏈表中插入或刪除一個(gè)結(jié)點(diǎn)時(shí),僅需修改指針而不需要移動(dòng)元素。反之,如圖39所示在線性表中刪除元素b時(shí),為在單鏈表中實(shí)現(xiàn)元素a、b和c之間的邏輯關(guān)系的變化,僅需要修改結(jié)點(diǎn)a中的指針域即可。假設(shè)s為指向結(jié)點(diǎn)x的指針,則上述指針修改用語(yǔ)句描述即為:snext=pnext 。根據(jù)插入操作的邏輯定義,還需要修改結(jié)點(diǎn)a中的指針域,令其指向結(jié)點(diǎn)x,而結(jié)點(diǎn)x中的指針域應(yīng)指向結(jié)點(diǎn)b,從而實(shí)現(xiàn)3個(gè)元素a、b和x之間邏輯關(guān)系的變化。 在鏈表操作的實(shí)現(xiàn)中,此程序是鏈表的基本操作模型,在這種存儲(chǔ)結(jié)構(gòu)中,容易實(shí)現(xiàn)線性表的某些操作, 在此程序中,我們重點(diǎn)實(shí)現(xiàn)了鏈表的插入和刪除。源代碼如下: NewFileName=ExtractFilePath(ApplicationExeName)+。根據(jù)以上思想,我設(shè)計(jì)該程序的運(yùn)行頁(yè)面如圖36所示。線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)是用一組任意的存儲(chǔ)單元存儲(chǔ)線性表的數(shù)據(jù)元素(這組存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的)。 i=WinExec((),SW_SHOWNORMAL)。圖34 鏈表概念顯示圖 圖35 鏈表概念流程圖開始輸入數(shù)據(jù)選擇按紐顯示鏈表順序退出結(jié)束(2)在菜單中,我們通過調(diào)用WinExec函數(shù),以執(zhí)行外部命令的方式,來完成鏈表模型的演示。此程序是用一組地址連續(xù)的存儲(chǔ)單位依次存儲(chǔ)線性表的數(shù)據(jù)元素,以此實(shí)現(xiàn)線性表的順序存儲(chǔ)結(jié)構(gòu),這種存儲(chǔ)結(jié)構(gòu)的線性表叫順序表。 i=WinExec((),SW_SHOWNORMAL)。 線性表模塊(1)在菜單中,我們通過調(diào)用WinExec函數(shù),以執(zhí)行外部命令的方式,來完成鏈表概念的演示。幫助操作數(shù)據(jù)結(jié)構(gòu)程序線性表說明圖說明幫助關(guān)于樹說明隊(duì)列說明堆棧說明圖樹堆棧和隊(duì)列線性表退出圖33 主菜單流程圖(3)控件介紹:C++ Builder的組件工具箱(Component Palette)提供各種制作組件的工具,包括文字標(biāo)簽、文本框、圖象組件等。如圖32所示:圖32 主菜單的顯示圖(2)設(shè)計(jì)思想:開始作為一個(gè)演示系統(tǒng)的菜單,應(yīng)給人一個(gè)直觀的感覺,有個(gè)醒目的標(biāo)題,通過一個(gè)菜單控件,連接我們?cè)O(shè)計(jì)的各種數(shù)據(jù)結(jié)構(gòu)的算法演示;兩個(gè)文本輸入,用于對(duì)算法的說明,輔助使用者對(duì)算法的學(xué)習(xí);作為一個(gè)系統(tǒng),一個(gè)幫助模塊是不可缺少的。主菜單、線性表、樹、操作四部分模塊的設(shè)計(jì)。本系統(tǒng)是由我與另外一個(gè)同學(xué)合作完成的,根據(jù)系統(tǒng)的結(jié)構(gòu),我們對(duì)各自的任務(wù)做了明確的分工。程序模塊由退出組成。操作模板由線性表說明、堆棧說明、隊(duì)列說明、樹說明、圖說明組成。數(shù)據(jù)結(jié)構(gòu)模板由線性表、堆棧和隊(duì)列、樹、圖等四個(gè)部分組成?;蛘?,也可以每次捕捉到異常之后都保存一次。其中,他提到了使用TStringList作記錄的方法:先將錯(cuò)誤通過TStringList的Add方法加入到StringList里面,然后使用SaveToFile保存到硬盤上。所有的Delphi/Cbuilder用戶都注意到了這一點(diǎn),但是說沒有付出就沒有收獲。E,()將返回捕獲到的產(chǎn)生異常的實(shí)際類名。 ClassName()給了什么樣的幫助呢?它只是用于返回字符串“Exception”嗎?每一次,E都被聲明為異常類型?這是VCL另一個(gè)優(yōu)秀的地方,所有的類都從Tobject繼承,所以,這些類都能自動(dòng)獲得正確的類型和基類的類型,所有的更多的信息都可以在這里找到。在出現(xiàn)錯(cuò)誤時(shí),你會(huì)立刻知道錯(cuò)誤發(fā)生的位置。   }。在代碼中每一個(gè)函數(shù)或是主要的函數(shù)中加入:   try   {    //函數(shù)的代碼   }   catch(Exception amp。一個(gè)在IDE中產(chǎn)生的異常會(huì)導(dǎo)致很多問題,甚至可能無法重新啟動(dòng)IDE也不能恢復(fù)。一般來說,通過很多的bugs測(cè)試后(盡量折磨程序,看看它會(huì)不會(huì)崩潰),應(yīng)用程序在運(yùn)行是應(yīng)該不會(huì)出現(xiàn)什么錯(cuò)誤。(Gexperts的控制臺(tái)就是用這樣的方法制作的)。通常,在運(yùn)行10分鐘左右之后,會(huì)使整個(gè)計(jì)算機(jī)的速度變慢!所以,如果希望在自己的記錄中能夠使用彩色和圖標(biāo),那么最好自己創(chuàng)建一個(gè)組件。這個(gè)方法可能不是想象的這么簡(jiǎn)單。Gexperts可以在 得到,它是免費(fèi)的。 或者,你需要它更機(jī)警一些,可以使用SendDebugEx(它給TMsgDlgType增加了一個(gè)新的消息類型)SendMethodEnter, SendMethodExit, SendSeparator等等(用法都差不多)。要使用dbugintf,它很容易被加入到你的工程中,加入include (要把它加入工程,然后會(huì)編譯它的pascal文件)。和OutputDebugString一樣,如果客戶沒有這個(gè)程序,它就根本什么也不作。 第二個(gè)方法:使用了Gexperts,通過 。它會(huì)很好的在客戶的機(jī)器上運(yùn)行,不會(huì)彈出信息窗口。應(yīng)用程序在調(diào)試器進(jìn)程中運(yùn)行時(shí)OutputDebugString將用C字符串把調(diào)試器輸出的信息打印出來。)很幸運(yùn),微軟徹底的實(shí)現(xiàn)了調(diào)試子系統(tǒng)。 第一個(gè)方法:OutputDebugString。現(xiàn)在有一系列的方法可以簡(jiǎn)單的完成這樣的工作。(比如:Windows NT服務(wù)程序,ISAPI/CGI程序,實(shí)時(shí)應(yīng)用程序等等)。這些將對(duì)于理解本節(jié)所說的內(nèi)容有很大幫助。) 就是這些了。這是一個(gè)清理程序中使用new分配的本地變量,設(shè)置用作旗標(biāo)的變量值為正常的好位置。這樣,你處理過的異常會(huì)再次被拋出,繼續(xù)尋找下一個(gè)catch語(yǔ)句來處理它。這時(shí),程序?qū)⒗^續(xù)尋找下一個(gè)catch()語(yǔ)句來處理這個(gè)異常。 這個(gè)機(jī)制還有更多的功能。還有更多的功能嗎?當(dāng)然,你可以添加更多的catch()語(yǔ)句,可以向使用if…else if…語(yǔ)句那樣使用它。為了讓這個(gè)機(jī)制更強(qiáng)大,C++Builder中還定義了catch(…)語(yǔ)句。所以,catch(Exceptionamp。Catch()語(yǔ)句里面可以指定一個(gè)要捕捉的類型或是變量,甚至可以用它來捕捉樹結(jié)構(gòu)或是繼承類的異常,如果捕捉了基類的異常,它就能捕捉到繼承這個(gè)基類的所有的類的異常。這個(gè)機(jī)制完全可以按照需要自定義。 C++Builder定義了try {} catch (…) {}機(jī)制。在這樣的需求下,異常處理機(jī)制出現(xiàn)了。(比如說,你經(jīng)常檢查winapi函數(shù)的返回值嗎?)所以,出現(xiàn)問題的可能性并不小。一些重要的、處理的錯(cuò)誤可能會(huì)在窗體之外發(fā)生。 (2)使用Exceptions和Exception的處理方法 除去一些少數(shù)的情況,開發(fā)人員不可能總是依靠于集成的調(diào)試工具。這時(shí),你就會(huì)覺得多花一些時(shí)間使程序易讀是很值得的。請(qǐng)想象一下,如果隨便掃視一眼代碼或注釋,就能立刻知道這段代碼的的作用,以及在寫代碼的時(shí)候?yàn)槭裁匆@樣寫,當(dāng)時(shí)的思路是什么,那么就可以節(jié)約大量時(shí)間。 (1)寫易讀的代碼 第一點(diǎn),大概也是最重要的一點(diǎn),就是寫干凈易讀的代碼。 BCB的調(diào)試程序的bugs越少,最終用戶對(duì)這個(gè)程序的評(píng)價(jià)越高。如果你原先用Delphi(Object Pascal語(yǔ)言),現(xiàn)在想改學(xué) C++,應(yīng)當(dāng)先C++Builder。)而且有比較緊的期限限制,選C++Builder比較好。如果你寫傳統(tǒng)的Windows桌面應(yīng)用程序,Visual C++的MFC框架是正統(tǒng)的選擇。如果你開發(fā)系統(tǒng)底層的東西,需要極好的兼容性和穩(wěn)定性,選Visual C++吧。它們?cè)谠S多領(lǐng)域并不重疊,甚至是互補(bǔ)的。根據(jù) 你的需要做選擇吧。微軟最近提出了C(讀作C Sharp)語(yǔ)言方案,但那屬于和Java同一類的東西。如果不使用MFC,目前又沒有合適的替代品。但多多少少的不盡人意之處對(duì)Inprise想說愛你不容易??磥砦④涬m然被判解體,開發(fā)實(shí)力可是一點(diǎn)沒打折扣。不知能不能在保持穩(wěn)定性的同時(shí)在技術(shù)的先進(jìn)性上趕上C++Builder。但愿對(duì)Inprise沖擊不會(huì)太大。C++Builder是一個(gè)很有前途的開發(fā)工具。)C++Builder是Inspires的旗艦產(chǎn)品之一,前景應(yīng)當(dāng)還是比較樂觀的,而且Inspires已經(jīng)在向Linux進(jìn)軍了,而微軟還遲遲沒有動(dòng)作,難道非要到Linux成燎原之勢(shì)(或許已經(jīng)成燎原之勢(shì)了)才會(huì)奮起占領(lǐng)這個(gè)新興市場(chǎng)?似乎他們對(duì)Linux的態(tài)度與幾年前對(duì)互聯(lián)網(wǎng)的興起的反應(yīng)遲緩有些相似。(哪個(gè)同類產(chǎn)品的幫助文檔能和MSDN比呢?)Inprise公司應(yīng)從Netscape吸取教訓(xùn),不要讓C++Builder成為第二個(gè)Netscape Communicator。但I(xiàn)nspires的總體實(shí)力不及微軟,這也是無可爭(zhēng)議的。但Borland C++又流行了多少年呢?不久就被新崛起的Microsoft Visual C/C++壓下去了。當(dāng)初Borland的Turbo C和Borland C++幾乎是唯一的選擇。 再來看看它們的前景吧。希望Inprise能先解決同門兄弟的兼容性問題。而且雖說通過捆綁編譯器,C++Builder可以編譯Delphi的Object Pascal代碼,但C++Builder仍不能使用為Delphi開發(fā)的VC
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1