2專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書1(實(shí)驗(yàn)一)_第1頁
2專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書1(實(shí)驗(yàn)一)_第2頁
2專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書1(實(shí)驗(yàn)一)_第3頁
2專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書1(實(shí)驗(yàn)一)_第4頁
2專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書1(實(shí)驗(yàn)一)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、For pers onal use only in study and research; not for commercial use專業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書軟件 101、102第1部分上機(jī)實(shí)驗(yàn)上機(jī)實(shí)驗(yàn)要求及規(guī)范一、實(shí)驗(yàn)?zāi)康?、要求和任?wù)數(shù)據(jù)結(jié)構(gòu)課程具有比較強(qiáng)的理論性,同時(shí)也具有較強(qiáng)的可應(yīng)用性和實(shí)踐性。上機(jī)實(shí)驗(yàn)是一個(gè)重要的教學(xué)環(huán)節(jié)。學(xué)生應(yīng)該重視實(shí)驗(yàn)環(huán)節(jié),對(duì)于編寫程序上機(jī)練習(xí)具有一定的積極性。更應(yīng)該重視 實(shí)驗(yàn)的總結(jié)、實(shí)驗(yàn)報(bào)告的撰寫。對(duì)于一名大學(xué)生必須嚴(yán)格訓(xùn)練分析總結(jié)能力、書面表達(dá)能力。需要逐步培養(yǎng)書寫科學(xué)實(shí)驗(yàn)報(bào)告以及科技論文的能力。拿到一個(gè)題目,一般不要急于編程。按照面向過程的程序設(shè)計(jì)思路(關(guān)于面向

2、對(duì)象的訓(xùn)練將在其它后繼課程中進(jìn) 行),正確的方法是:首先理解問題,明確給定的條件和要求解決的問題,然后按照自頂向 下,逐步求精,分而治之的策略,逐一地解決子問題。具體實(shí)習(xí)步驟如下:1問題分析與系統(tǒng)結(jié)構(gòu)設(shè)計(jì)上機(jī)實(shí)驗(yàn)是針對(duì)一個(gè)具體的實(shí)際問題,進(jìn)行程序設(shè)計(jì)以便解決問題。首先需要充分地分析和理解問題本身,弄清要求 做什么(而不是怎么做), 限制條件是什么。按照面向?qū)ο蠹?術(shù)的原則,考慮所需設(shè)計(jì)的 類是什么?在主函數(shù)中如何使用類對(duì)象,如何實(shí)現(xiàn)問題的解決。 具體來講,搞清實(shí)際問題的若干數(shù)據(jù)元素的邏輯結(jié)構(gòu)(是線性表還是樹、圖?),確定數(shù)據(jù) 的存儲(chǔ)結(jié)構(gòu)(是順序結(jié)構(gòu)還是鏈表結(jié)構(gòu)?),設(shè)計(jì)哪些有關(guān)操作的函數(shù)。將數(shù)

3、據(jù)存儲(chǔ)結(jié)構(gòu)和算法對(duì)應(yīng)的函數(shù)封裝成為一個(gè)類,一些重要的典型的算法往往以類的成員函數(shù)形式出現(xiàn)。要求繪制簡(jiǎn)明扼要的系統(tǒng)結(jié)構(gòu)圖,主要描述主函數(shù)系統(tǒng)結(jié)構(gòu)。對(duì)于復(fù)雜重要的算法, 也要繪制該函數(shù)的流程圖。充分地分析和理解問題本身,弄清要求做什么,包括功能要求、性能要求、設(shè)計(jì)要求和約束以及基本數(shù)據(jù)特性,數(shù)據(jù)間的聯(lián)系等。2. 詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)是對(duì)函數(shù)(模塊)的進(jìn)一步求精,用偽高級(jí)語言或自然語言寫出算法框架,這 時(shí)不必確定很多結(jié)構(gòu)和變量。編碼,即程序設(shè)計(jì)。就是對(duì)詳細(xì)設(shè)計(jì)結(jié)果的進(jìn)一步求精,即用某種高級(jí)語言(如C+H語言)表達(dá)出來。盡量多設(shè)一些注釋語句,清晰易懂。盡量臨時(shí)增加 一些輸出語句,便于差錯(cuò)矯正,在程序

4、成功后再刪去它們。3. 上機(jī)準(zhǔn)備熟悉高級(jí)語言用法,如 C+語言。熟悉機(jī)器(即操作系統(tǒng)),基本的常用命令。靜態(tài)檢 查主要有兩條路徑, 一是用一組測(cè)試數(shù)據(jù)手工執(zhí)行程序(或分模塊進(jìn)行);二是通過閱讀或 給別人講解自己的程序而深入全面地理解程序邏輯,在這個(gè)過程中再加入一些注釋和斷言。 如果程序中邏輯概念清楚,后者將比前者有效。4. 上機(jī)調(diào)試程序上機(jī)調(diào)試程序應(yīng)該分步驟分層次進(jìn)行。程序由簡(jiǎn)到繁、規(guī)模由小到大、數(shù)據(jù)量由少到多, 逐步完成。比如,針對(duì)一個(gè)類它可能有許多函數(shù),建議首先僅僅調(diào)試類的構(gòu)造函數(shù)和輸入/出函數(shù),這一步比較簡(jiǎn)單容易。即使如此,實(shí)驗(yàn)數(shù)據(jù)的規(guī)模也從少量幾個(gè)開始(1-3個(gè)),程序調(diào)通之后,再用大

5、量數(shù)據(jù)(十個(gè)到幾十個(gè)或者更多)實(shí)驗(yàn)。此時(shí),還可以排除一些錯(cuò)誤。通過這 一階段,可以排除數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、構(gòu)造函數(shù)和輸入/輸出函數(shù)設(shè)計(jì)的錯(cuò)誤。然后,再把體現(xiàn)重要算法的函數(shù)加入到源程序之中,這包括:類代碼中的函數(shù)原型聲明、函數(shù)實(shí)現(xiàn)的程序代碼以及對(duì)它的調(diào)用語句等等。此時(shí),實(shí)驗(yàn)數(shù)據(jù)規(guī)模也從少量幾個(gè)開始,以便檢查算法設(shè)計(jì)的正確性,程序基本調(diào)通之后,再用大量數(shù)據(jù)進(jìn)行實(shí)驗(yàn)。本階段還可進(jìn)一步 排除一些錯(cuò)誤。但是,出現(xiàn)錯(cuò)誤的范圍往往集在新加入的代碼段之中。5. 測(cè)試用例設(shè)計(jì)準(zhǔn)備典型測(cè)試數(shù)據(jù)和測(cè)試方案,測(cè)試數(shù)據(jù)要有代表性、 敏感性,測(cè)試方案包括模塊測(cè)試和模塊集成測(cè)試。6. 整理實(shí)習(xí)報(bào)告在上機(jī)實(shí)開始之前要充分準(zhǔn)備實(shí)驗(yàn)數(shù)

6、據(jù),在上機(jī)實(shí)踐過程中要及時(shí)記錄實(shí)驗(yàn)數(shù)據(jù),在 上機(jī)實(shí)踐完成之后必須及時(shí)總結(jié)分析。寫出實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告的書寫格式。實(shí)驗(yàn)報(bào)告書寫:(1 )實(shí)驗(yàn)?zāi)康募耙蟀慈蝿?wù)書給出實(shí)驗(yàn)?zāi)康募耙?,?shí)驗(yàn)?zāi)康囊羁腆w會(huì)。(2 )實(shí)驗(yàn)內(nèi)容按任務(wù)書給出的實(shí)驗(yàn)內(nèi)容抄寫(3 )解決問題的思路1)對(duì)實(shí)驗(yàn)問題的描述:2)算法的數(shù)據(jù)結(jié)構(gòu);3)算法基本操作的說明及分析(可能需要流程圖)(4)工作表清單給出算法描述的程序代碼(加附頁)(5)總結(jié)1) 給出測(cè)試數(shù)據(jù)及實(shí)驗(yàn)結(jié)果分析與評(píng)價(jià);2)實(shí)驗(yàn)方法的拓展;3)算法的時(shí)間復(fù)雜度為;4)實(shí)驗(yàn)心得體會(huì)附源程序清單和運(yùn)行結(jié)果。源程序要加注釋。如果題目規(guī)定了測(cè)試數(shù)據(jù),則結(jié)果要包含這些測(cè)試數(shù)據(jù)和運(yùn)行

7、輸出, 當(dāng)然還可以含有其它測(cè)試數(shù)據(jù)和運(yùn)行輸出(有時(shí)需要多組數(shù)據(jù))。二、如何提高上機(jī)效率為了提高上機(jī)的效率, 真正達(dá)到實(shí)驗(yàn)?zāi)康模?要求同學(xué)做好實(shí)驗(yàn)前的準(zhǔn)備工作,寫好實(shí)驗(yàn)預(yù)習(xí)報(bào)告,編寫好程序,并用一組測(cè)試數(shù)據(jù)手工執(zhí)行程序靜態(tài)檢查程序是否有錯(cuò),通過閱讀、執(zhí)行程序或給別人講解自己的程序而深入全面地理解程序邏輯,提高程序的正確性。對(duì)c,c+語言程序不熟悉的同學(xué),上機(jī)時(shí)最好帶上c,c+語言程序設(shè)計(jì)的教材,以備查詢。調(diào)試中遇到問題,應(yīng)認(rèn)真分析,確定可疑點(diǎn),設(shè)置調(diào)試斷點(diǎn)或輸出斷點(diǎn)處變量的值,以便發(fā)現(xiàn)問題,迅速排除問題,加快調(diào)試速度。第2部分C+基本知識(shí)各種數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)算法的描述總是要選用一種語言工具。在計(jì)

8、算機(jī)科學(xué)發(fā)展過程中,早期數(shù)據(jù)結(jié)構(gòu)教材大都采用PASCALS言為描述工具,后來出現(xiàn)了采用C語言為描述工具的教材版本、至今又出現(xiàn)了采用C+語言為描述工具的多種教材版本。本實(shí)驗(yàn)指導(dǎo)書是為已經(jīng)學(xué)習(xí)過C+語言的學(xué)生而編寫。程序要求在Devc+開發(fā)環(huán)境之下調(diào)試運(yùn)行,采用面向?qū)?象方法進(jìn)行設(shè)計(jì)。 典型的數(shù)據(jù)結(jié)構(gòu)被設(shè)計(jì)成為類(class),典型算法設(shè)計(jì)成為類的函數(shù)成員,然后在主函數(shù)中聲明創(chuàng)建類對(duì)象,根據(jù)實(shí)際需要調(diào)用重要的算法。由于C+的使用具有一定的難度,為了同學(xué)更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)自身的知識(shí)內(nèi)容,減輕描述工具所帶來的困難,這里針對(duì)數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)所必須的C+基本知識(shí)(結(jié)構(gòu)體、類等等)做補(bǔ)充介紹。#in elu

9、de編譯預(yù)處理編譯預(yù)處理等類的相關(guān)程序編碼主函數(shù)程序代碼一、源程序組成class A;/類成員函數(shù)定義;int mai n()這部分內(nèi)容詳細(xì)參見本指導(dǎo)書的第3部分的程序?qū)嵗?。二、結(jié)構(gòu)體及運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程所研究的問題均運(yùn)用到“結(jié)構(gòu)體”和“類” 。在C+語言中結(jié)構(gòu)體和函數(shù)又是理解和掌握“類”的語法基礎(chǔ)。定義結(jié)構(gòu)體的一般格式:struct 結(jié)構(gòu)體類型名類型名1變量名1;數(shù)據(jù)子域類型名2變量名2;類型名n變量名n;其中struct是保留字。結(jié)構(gòu)體類型名由用戶自己命名。在使用時(shí)必須聲明一個(gè)具體的結(jié)構(gòu)體類型的變量,聲明創(chuàng)建一個(gè)結(jié)構(gòu)體變量的方法是:int結(jié)構(gòu)體類型名結(jié)構(gòu)體變量名;一個(gè)結(jié)構(gòu)體中可以包含多個(gè)數(shù)據(jù)

10、子域。數(shù)據(jù)子域的類型名一般指基本數(shù)據(jù)類型(char等),也可是已經(jīng)定義的另一結(jié)構(gòu)體名。數(shù)據(jù)子域變量名可以是簡(jiǎn)單變量,也可以是數(shù) 組。它們也可以稱為結(jié)構(gòu)體的數(shù)據(jù)成員,它們的訪問控制具有公有屬性。i. 通過“結(jié)構(gòu)體變量名.數(shù)據(jù)子域”可以訪問數(shù)據(jù)子域。/設(shè)計(jì)Student結(jié)構(gòu)體,在主程序中運(yùn)用。#in elude#in elude#in elude/定義結(jié)構(gòu)體Stude nt longnum;/學(xué)號(hào)intx;/成績(jī)charn amei0;/姓名int main() Stude ntsi;/為si的數(shù)據(jù)子域提供數(shù)據(jù)struct Stude nt聲明創(chuàng)建一個(gè)結(jié)構(gòu)體變量si或者使用鍵盤輸入si. num=

11、1001 ;si. x=83;cin si. num; cin si. x;strcpy( si. name.李明”);cin si. name;/輸出結(jié)構(gòu)體變量si的內(nèi)容cout “ 姓名:” endl;cout“學(xué)號(hào):” si.numendl:cout“成績(jī):” si.x ednl;_getch(); return 0;2.設(shè)計(jì)一維數(shù)組,每個(gè)數(shù)組元素是Stude nt結(jié)構(gòu)體類型,通過以下語句段可以說明結(jié)構(gòu) 體數(shù)組的一般用法:通過“ 結(jié)構(gòu)體數(shù)組名下標(biāo).數(shù)據(jù)子域”訪問數(shù)據(jù)域。Stude nt a5;聲明創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組afor(i nti=0, i5, i+) coutai.

12、num;/輸出數(shù)組元素 ai的學(xué)號(hào)域cout ;/輸出數(shù)組元素 ai的姓名域coutai.x;/輸出數(shù)組元素ai的成績(jī)域以上是關(guān)于結(jié)構(gòu)體的基本概念和簡(jiǎn)單運(yùn)用。三、類的基本概念及運(yùn)用類的是面向?qū)ο蟪绦虻幕締挝?。類是由?shù)據(jù)成員和相關(guān)的函數(shù)成員組成。從面向?qū)ο蟮慕嵌瓤紤]“學(xué)生”這個(gè)類,它不僅包括“學(xué)生”的一般屬性:學(xué)號(hào)、姓名、成績(jī)等等,還應(yīng)包括對(duì)于這些屬性的操作:輸入/輸出、聽課、實(shí)驗(yàn)、等等。類定義的一般格式:class 類名若干數(shù)據(jù)成員; 若干函數(shù)成員;;類的數(shù)據(jù)成員和函數(shù)成員均存在訪問控制權(quán)限問題。訪問控制分為三種:公有(public )、私有(private)和受護(hù)(prot

13、ected)。數(shù)據(jù)成員的定義和結(jié)構(gòu)體中的數(shù)據(jù)域定義是相似的。不同的是它們必須明確訪問控制。而公有數(shù)據(jù)成員,可以認(rèn)為與結(jié)構(gòu)體的數(shù)據(jù)域的訪問權(quán)限相同。成員函數(shù)的定義又和一般函數(shù)的定義基本相同。不同的是類中成員函數(shù)也必須明確訪問控制權(quán)限。如果在類之中定義成員函數(shù)帶函數(shù)體,并未有什么特殊之處。如果在類之中僅有成員函數(shù)的原型聲明,當(dāng)在類定義之外定義函數(shù)體時(shí),需要加上類限定標(biāo)識(shí)“類名:”。下面是“學(xué)生”類的定義:class Stude nts private:long num;int x;char n ame10; public:Stude nts();Stude nts() ;/定義類結(jié)構(gòu)體Stude

14、nts私有成員/學(xué)號(hào)/ 成績(jī)/姓名/公有成員void SetDat( long n, i nt xO, char *naO ) num=n; x=x0; strcpy( n ame ,n a0);void Prin tOut();輸出函數(shù)的原型聲明;void Stude nts:Pri ntOut()輸出函數(shù)前加 Stude nts: cout “ 姓名: ” iame endl;cout “學(xué)號(hào): ” numendl:cout “成績(jī):” ednl;在主程序中運(yùn)用類Stude main()/聲明創(chuàng)建一個(gè)類對(duì)象s,調(diào)用構(gòu)造函數(shù)輸出s的內(nèi)容Stude ntss;s.Prin tO

15、ut();long m; int y; char xn ame10;cout yx name;s. SetDat( m, y, xname );修改對(duì)象 s 數(shù)據(jù)s. PrintOut();輸出改變后s的內(nèi)容運(yùn)行結(jié)果:_getch(); return 0;姓名:o學(xué)號(hào):0成績(jī):0輸入學(xué)號(hào),成績(jī),姓名:1001 90 Wan gMi ng姓名:Wan gMi ng學(xué)號(hào):1001成績(jī):90這個(gè)例題中數(shù)據(jù)成員全部定義為私有(private),以便保證數(shù)據(jù)安全性。而函數(shù)成員全部定義為公有(public )成員函數(shù),可以作為類對(duì)外部的的接口。通過s. SetDat( m, y, xname );直接訪公

16、有函數(shù)成員SetDat(),將實(shí)參(主函數(shù)的局部變量 m, y,xn ame)的數(shù)據(jù)賦給私有數(shù)據(jù)成員num, x, name。通過s.PrintOut();直接訪公有函數(shù)成員PrintOut(),間接訪問輸出私有成員num,x,name。四、結(jié)構(gòu)體在類中的使用1結(jié)構(gòu)體數(shù)組做類的數(shù)據(jù)成員con st i nt MAXSIZE=100;/ 數(shù)組的容量struct ElemType/數(shù)據(jù)元素的類型 int nu mb;char n ame20;long tel;class Sqlist private:ElemType elemMAXSIZE;/結(jié)構(gòu)體ElemType類型的數(shù)組 elem做數(shù)據(jù)成員i

17、nt len gth;public:Sqlist( void);Sqlist() ;/其他函數(shù);2. 結(jié)構(gòu)體指針變量做類的數(shù)據(jù)成員struct NodeType int data;/結(jié)點(diǎn)的結(jié)構(gòu)定義/數(shù)據(jù)域NodeType *n ext;/指針域;class Link/類聲明 private:NodeType *Head;指向結(jié)構(gòu)構(gòu)體NodeType的指針變量Head做數(shù)據(jù)成員public:Li nk ( )Head=new NodeType;Head-n ext=Head; Lin k () ;void creat();/為頭結(jié)點(diǎn)申請(qǐng)空間/頭結(jié)點(diǎn)Head形成空環(huán)Headvoid outs();

18、實(shí)驗(yàn)一:關(guān)于抽象數(shù)據(jù)類型ADT勺實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康募耙?熟悉C+環(huán)境(DEVC+),理解抽象數(shù)據(jù)類型 ADT的基本概念;2. 學(xué)會(huì)運(yùn)用C設(shè)計(jì)實(shí)現(xiàn)復(fù)數(shù)的ADT、集合的ADT ;3. 練習(xí)運(yùn)算符重載的使用。二、實(shí)驗(yàn)內(nèi)容01. 定義復(fù)數(shù)的數(shù)據(jù)結(jié)構(gòu),在復(fù)數(shù)加法的基礎(chǔ)上增加減法、乘法、除法操作。2. 定義集合的數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)集合的并、交、差運(yùn)算基本操作。要求:演示程序有很好的界面及交互性。如:實(shí)驗(yàn)1的參考界面:卜-二歡迎使用真藪電算岳建花貫數(shù)的輸入2”復(fù)數(shù)C2的輸入包-復(fù)藪的輸由4-c-cl*c25 . c =c 1 c2 c =ci*c27 . c =clZc28 -退出 輸入直已Tii.中的日示dJ

19、tju丄玄-4 輸入:LF= 2R+hl中的豆幣= ? 輸入丄312-41k;S+7i 輸入:4*?+3i三、實(shí)驗(yàn)準(zhǔn)備 1.計(jì)算機(jī)設(shè)備;2.程序調(diào)試環(huán)境的準(zhǔn)備,如 Devc+環(huán)境;3實(shí)驗(yàn)內(nèi)容的算法分析與代碼設(shè)計(jì)與分析準(zhǔn)備 四、實(shí)驗(yàn)背景知識(shí)1數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí)(1) .數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)指的是有某種關(guān)系(某一種關(guān)系)的數(shù)據(jù)元素的集合。包括以下三個(gè)方面的內(nèi)容: 數(shù)據(jù)的邏輯結(jié)構(gòu)一一數(shù)據(jù)元素之間的邏輯關(guān)系(D,S)。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)一一數(shù)據(jù)元素及其關(guān)系在計(jì)算機(jī)存儲(chǔ)器內(nèi)的表示。運(yùn)算(操作特征)一一對(duì)數(shù)據(jù)進(jìn)行操作的特點(diǎn)和規(guī)范。(P)(2).數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯關(guān)系上描述數(shù)據(jù),它與數(shù)據(jù)的存儲(chǔ)無關(guān)

20、,是獨(dú)立于計(jì)算機(jī)的。有四大類:集合、線性結(jié)構(gòu)、樹型結(jié)構(gòu)、圖型結(jié)構(gòu)。線性結(jié)構(gòu)的邏輯特征是:若結(jié)構(gòu)是非空集,則符合以下四個(gè)特征:有且僅有一個(gè)表頭結(jié)點(diǎn);有且僅有一個(gè)表尾結(jié)點(diǎn);除了表頭結(jié)點(diǎn),其余結(jié)點(diǎn)均有且僅有一個(gè)直接前驅(qū);除了表尾結(jié)點(diǎn),其余結(jié)點(diǎn)均有且僅有一個(gè)直接后繼。(3).數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是邏輯結(jié)構(gòu)用計(jì)算機(jī)語言的實(shí)現(xiàn),即建立計(jì)算機(jī)的機(jī)內(nèi)表示,在存儲(chǔ)空間中建立各結(jié)點(diǎn)之間的關(guān)聯(lián)來表示數(shù)據(jù)元素之間的邏輯關(guān)系。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)主要有順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)兩大類。順序存儲(chǔ)結(jié)構(gòu)中的元素都依次存儲(chǔ)在一個(gè)連續(xù)的區(qū)域中,元素的物理地址就體現(xiàn)了元素的邏輯關(guān)系。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中的結(jié)點(diǎn)不僅包含一個(gè)數(shù)據(jù)元素,還包

21、含一個(gè)指針,指向該元素邏輯上的直接后繼結(jié)點(diǎn)。(4).數(shù)據(jù)結(jié)構(gòu)的運(yùn)算1)創(chuàng)建運(yùn)算(create):創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu);2)清除運(yùn)算(clear):刪除數(shù)據(jù)結(jié)構(gòu)中的全部元素;3)插入運(yùn)算(insert):在數(shù)據(jù)結(jié)構(gòu)的指定位置上插入一個(gè)新元素;4)刪除運(yùn)算(remove):將數(shù)據(jù)結(jié)構(gòu)中的某個(gè)元素刪除;5)搜索運(yùn)算(search):在數(shù)據(jù)結(jié)構(gòu)中搜索滿足一定條件的元素;6)更新運(yùn)算(replace):修改數(shù)據(jù)結(jié)構(gòu)中某個(gè)元素的值;7)訪問運(yùn)算(retrieve):訪問數(shù)據(jù)結(jié)構(gòu)中某個(gè)元素;8)遍歷運(yùn)算(traverse):按照某種次序,系統(tǒng)地訪問數(shù)據(jù)結(jié)構(gòu)的各元素,使得每個(gè)元素 恰好被訪問一次。(5).數(shù)據(jù)結(jié)構(gòu)

22、的規(guī)范和實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的規(guī)范(ADT ):是指它的邏輯結(jié)構(gòu)和運(yùn)算的規(guī)范;數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn):是指它的存儲(chǔ)表示和運(yùn)算的實(shí)現(xiàn)。2復(fù)數(shù)復(fù)數(shù)的代數(shù)形式:形如 a + bi (a, b R)的數(shù)叫復(fù)數(shù),實(shí)數(shù) a、b分別叫做實(shí)部和虛部。 試設(shè)計(jì)一個(gè)復(fù)數(shù)類,該類有實(shí)部和虛部?jī)蓚€(gè)成員數(shù)據(jù),成員數(shù)據(jù)采用私有訪問權(quán)限,同時(shí)該類有兩個(gè)共有成員函數(shù)。設(shè)z仁a+bi,z2=c+di是任意兩個(gè)復(fù)數(shù),復(fù)數(shù)的四則運(yùn)算規(guī)定為:z1+z2 =( a+ c) + ( b + d) i,z1-z2=( a c) + ( b d) i,z1*z2 =( ac bd) + ( bc+ ad) i,2 2 2 2z1/z2= (ac+bd) /

23、 (c +d ) + (bc ad) / (c +d ) i.3. 集合是一些可確定的可相互區(qū)別的事物(同種類型的數(shù)據(jù)元素)匯集在一起所組成的整體。集合的元素具有以下三個(gè)性質(zhì):(1)確定性.元素與集合的關(guān)系是屬于或不屬于,二者必居其一.(2) 互異性集合中元素彼此不同,沒有重復(fù)的元素。(3) 無序性集合中的元素與排列順序無關(guān)。并、交、差是集合常用的運(yùn)算。五、設(shè)計(jì)與實(shí)現(xiàn)1 復(fù)數(shù)的有關(guān)操作(1)復(fù)數(shù)的ADTADT complex數(shù)據(jù)對(duì)象:D= e1,e2 | e1,e2 RealSet 數(shù)據(jù)關(guān)系:R1 = | el是復(fù)數(shù)的實(shí)數(shù)部分,e2是復(fù)數(shù)的虛數(shù)部分運(yùn)算:Ini tComplex (v1, v2

24、 )操作結(jié)果:構(gòu)造一復(fù)數(shù),其實(shí)部和虛部分別被賦以參數(shù)v1和v2的值。DestroyComplex()操作結(jié)果:復(fù)數(shù)被銷毀。GetReal(&realPart )初始條件:復(fù)數(shù)已存在。操作結(jié)果:用realPart返回復(fù)數(shù)的實(shí)部值。Getlmag(&lmagPart )初始條件:復(fù)數(shù)已存在。操作結(jié)果:用ImagPart返回復(fù)數(shù)的虛部值。Add(z1,z2)初始條件:z1, z2是復(fù)數(shù)。操作結(jié)果:返回兩個(gè)復(fù)數(shù)z1、z2的和值。 ADT Complex(2)復(fù)數(shù)類模板的定義 (XXXX.h,女口 complex.h)template class Complexprivate:T real,imag;p

25、ublic:Complex();Complex(T r,T i);T Getreal()c on st;T Getimag()c on st;Complex Add(Complex &c);/其他運(yùn)算Complex operator+(Complex &c);/其他運(yùn)算重載void Output(ostrea m& out); void In put(istrea m& in);;(3 )復(fù)數(shù)類模板中成員函數(shù)的實(shí)現(xiàn)(complex.cpp)(4 )主程序模塊定義在沒有學(xué)習(xí)可視化圖形界面之前,建議在主函數(shù)中簡(jiǎn)單設(shè)計(jì)一個(gè)菜單”(do-while循環(huán)內(nèi)嵌套一個(gè)switch結(jié)構(gòu))。隨著學(xué)習(xí)的深入,應(yīng)該

26、學(xué)會(huì)熟練使用菜單”技術(shù),這樣會(huì)明顯提高編程和運(yùn)行效率。一個(gè)主函數(shù)一般樣式如下:(參考代碼) do顯示菜單內(nèi)容cout=歡迎使用復(fù)數(shù)運(yùn)算系統(tǒng) =n;cout1.復(fù)數(shù)C1的輸入 2. 復(fù)數(shù)C2的輸入n; cout3.復(fù)數(shù)的輸出4.c=c1+c2n;cout5.c=c1-c26.c=c1*c2n;cout7.c=c1/c28.退出 n;cout=n;cout c1; break;case 2:c inc2; break;case 3:coutc1c2; break;case 4:c3=c1+c2; break;case 5:c3=c1-c2; break;case 6:c3=c1*c2;break;case 7:c3=c1/c2;break;case 8:retur n; break;while(1)主程序結(jié)構(gòu)(實(shí)現(xiàn)見文件:complexmain.cpp):菜單顯示;選擇操作;(5)測(cè)試數(shù)據(jù)及測(cè)試結(jié)果(只列舉了加法運(yùn)算)1) 0,;0;應(yīng)輸出o2) 3.1,0;4.22,8.9;應(yīng)輸出 7.32+8.9 i3) -1.33,2.34;0.1,-6.5;應(yīng)輸出-1.23 4.16 i4) 0,9.7;-2.1,-9.7;應(yīng)輸出-2.15) 7.7,-8;-7.7,0;應(yīng)輸出-8i2 集合的有關(guān)操作(1)集合的ADTADT set/完成此部分內(nèi)容 ADT

溫馨提示

  • 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論