




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、專(zhuān)業(yè)基礎(chǔ)實(shí)驗(yàn)1指導(dǎo)書(shū)軟件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ì)于編寫(xiě)程序上機(jī)練習(xí)具有一定的積極性。更應(yīng)該重視實(shí)驗(yàn)的總結(jié)、實(shí)驗(yàn)報(bào)告的撰寫(xiě)。對(duì)于一名大學(xué)生必須嚴(yán)格訓(xùn)練分析總結(jié)能力、書(shū)面表達(dá)能力。需要逐步培養(yǎng)書(shū)寫(xiě)科學(xué)實(shí)驗(yàn)報(bào)告以及科技論文的能力。拿到一個(gè)題目,一般不要急于編程。按照面向過(guò)程的程序設(shè)計(jì)思路(關(guān)于面向?qū)ο蟮挠?xùn)練將在其它后繼課程中進(jìn)行),正確的方法是:首先理解問(wèn)題,明確給定的條件和要求解決的問(wèn)題,然后按照自頂向下,逐步求精,分而治之的策
2、略,逐一地解決子問(wèn)題。具體實(shí)習(xí)步驟如下:1.問(wèn)題分析與系統(tǒng)結(jié)構(gòu)設(shè)計(jì)上機(jī)實(shí)驗(yàn)是針對(duì)一個(gè)具體的實(shí)際問(wèn)題,進(jìn)行程序設(shè)計(jì)以便解決問(wèn)題。首先需要充分地分析和理解問(wèn)題本身,弄清要求做什么(而不是怎么做),限制條件是什么。按照面向?qū)ο蠹夹g(shù)的原則,考慮所需設(shè)計(jì)的類(lèi)是什么?在主函數(shù)中如何使用類(lèi)對(duì)象,如何實(shí)現(xiàn)問(wèn)題的解決。具體來(lái)講,搞清實(shí)際問(wèn)題的若干數(shù)據(jù)元素的邏輯結(jié)構(gòu)(是線(xiàn)性表還是樹(shù)、圖?),確定數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)(是順序結(jié)構(gòu)還是鏈表結(jié)構(gòu)?),設(shè)計(jì)哪些有關(guān)操作的函數(shù)。將數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)和算法對(duì)應(yīng)的函數(shù)封裝成為一個(gè)類(lèi),一些重要的典型的算法往往以類(lèi)的成員函數(shù)形式出現(xiàn)。要求繪制簡(jiǎn)明扼要的系統(tǒng)結(jié)構(gòu)圖,主要描述主函數(shù)系統(tǒng)結(jié)構(gòu)。對(duì)于復(fù)
3、雜重要的算法,也要繪制該函數(shù)的流程圖。充分地分析和理解問(wèn)題本身,弄清要求做什么,包括功能要求、性能要求、設(shè)計(jì)要求和約束以及基本數(shù)據(jù)特性,數(shù)據(jù)間的聯(lián)系等。2.詳細(xì)設(shè)計(jì)和編碼詳細(xì)設(shè)計(jì)是對(duì)函數(shù)(模塊)的進(jìn)一步求精,用偽高級(jí)語(yǔ)言或自然語(yǔ)言寫(xiě)出算法框架,這時(shí)不必確定很多結(jié)構(gòu)和變量。編碼,即程序設(shè)計(jì)。就是對(duì)詳細(xì)設(shè)計(jì)結(jié)果的進(jìn)一步求精,即用某種高級(jí)語(yǔ)言(如C+語(yǔ)言)表達(dá)出來(lái)。盡量多設(shè)一些注釋語(yǔ)句,清晰易懂。盡量臨時(shí)增加一些輸出語(yǔ)句,便于差錯(cuò)矯正,在程序成功后再刪去它們。3.上機(jī)準(zhǔn)備熟悉高級(jí)語(yǔ)言用法,如C+語(yǔ)言。熟悉機(jī)器(即操作系統(tǒng)),基本的常用命令。靜態(tài)檢查主要有兩條路徑,一是用一組測(cè)試數(shù)據(jù)手工執(zhí)行程序(或分
4、模塊進(jìn)行);二是通過(guò)閱讀或給別人講解自己的程序而深入全面地理解程序邏輯,在這個(gè)過(guò)程中再加入一些注釋和斷言。如果程序中邏輯概念清楚,后者將比前者有效。4.上機(jī)調(diào)試程序上機(jī)調(diào)試程序應(yīng)該分步驟分層次進(jìn)行。程序由簡(jiǎn)到繁、規(guī)模由小到大、數(shù)據(jù)量由少到多,逐步完成。比如,針對(duì)一個(gè)類(lèi)它可能有許多函數(shù),建議首先僅僅調(diào)試類(lèi)的構(gòu)造函數(shù)和輸入/出函數(shù),這一步比較簡(jiǎn)單容易。即使如此,實(shí)驗(yàn)數(shù)據(jù)的規(guī)模也從少量幾個(gè)開(kāi)始(1-3個(gè)),程序調(diào)通之后,再用大量數(shù)據(jù)(十個(gè)到幾十個(gè)或者更多)實(shí)驗(yàn)。此時(shí),還可以排除一些錯(cuò)誤。通過(guò)這一階段,可以排除數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、構(gòu)造函數(shù)和輸入/輸出函數(shù)設(shè)計(jì)的錯(cuò)誤。然后,再把體現(xiàn)重要算法的函數(shù)加入到源程序之
5、中,這包括:類(lèi)代碼中的函數(shù)原型聲明、函數(shù)實(shí)現(xiàn)的程序代碼以及對(duì)它的調(diào)用語(yǔ)句等等。此時(shí),實(shí)驗(yàn)數(shù)據(jù)規(guī)模也從少量幾個(gè)開(kāi)始,以便檢查算法設(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í)開(kāi)始之前要充分準(zhǔn)備實(shí)驗(yàn)數(shù)據(jù),在上機(jī)實(shí)踐過(guò)程中要及時(shí)記錄實(shí)驗(yàn)數(shù)據(jù),在上機(jī)實(shí)踐完成之后必須及時(shí)總結(jié)分析。寫(xiě)出實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告的書(shū)寫(xiě)格式。實(shí)驗(yàn)報(bào)告書(shū)寫(xiě):(1)實(shí)驗(yàn)?zāi)康募耙蟀慈蝿?wù)書(shū)給出實(shí)驗(yàn)?zāi)康募耙?,?shí)驗(yàn)?zāi)康囊羁?/p>
6、體會(huì)。(2)實(shí)驗(yàn)內(nèi)容按任務(wù)書(shū)給出的實(shí)驗(yàn)內(nèi)容抄寫(xiě)(3)解決問(wèn)題的思路1)對(duì)實(shí)驗(yàn)問(wèn)題的描述:2)算法的數(shù)據(jù)結(jié)構(gòu);3)算法基本操作的說(shuō)明及分析(可能需要流程圖)(4)工作表清單給出算法描述的程序代碼(加附頁(yè))(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)行輸出,當(dāng)然還可以含有其它測(cè)試數(shù)據(jù)和運(yùn)行輸出(有時(shí)需要多組數(shù)據(jù))。二、如何提高上機(jī)效率為了提高上機(jī)的效率,真正達(dá)到實(shí)驗(yàn)?zāi)康模笸瑢W(xué)做好實(shí)驗(yàn)前的準(zhǔn)備工作,寫(xiě)好實(shí)驗(yàn)預(yù)習(xí)報(bào)告,編寫(xiě)好程序,并用一組測(cè)試
7、數(shù)據(jù)手工執(zhí)行程序靜態(tài)檢查程序是否有錯(cuò),通過(guò)閱讀、執(zhí)行程序或給別人講解自己的程序而深入全面地理解程序邏輯,提高程序的正確性。對(duì)C,C+語(yǔ)言程序不熟悉的同學(xué),上機(jī)時(shí)最好帶上C,C+語(yǔ)言程序設(shè)計(jì)的教材,以備查詢(xún)。調(diào)試中遇到問(wèn)題,應(yīng)認(rèn)真分析,確定可疑點(diǎn),設(shè)置調(diào)試斷點(diǎn)或輸出斷點(diǎn)處變量的值,以便發(fā)現(xiàn)問(wèn)題,迅速排除問(wèn)題,加快調(diào)試速度。第2部分 C+基本知識(shí)各種數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)算法的描述總是要選用一種語(yǔ)言工具。在計(jì)算機(jī)科學(xué)發(fā)展過(guò)程中,早期數(shù)據(jù)結(jié)構(gòu)教材大都采用PASCAL語(yǔ)言為描述工具,后來(lái)出現(xiàn)了采用C語(yǔ)言為描述工具的教材版本、至今又出現(xiàn)了采用C+語(yǔ)言為描述工具的多種教材版本。本實(shí)驗(yàn)指導(dǎo)書(shū)是為已經(jīng)學(xué)習(xí)過(guò)C+語(yǔ)言
8、的學(xué)生而編寫(xiě)。程序要求在Devc+開(kāi)發(fā)環(huán)境之下調(diào)試運(yùn)行,采用面向?qū)ο蠓椒ㄟM(jìn)行設(shè)計(jì)。典型的數(shù)據(jù)結(jié)構(gòu)被設(shè)計(jì)成為類(lèi)(class),典型算法設(shè)計(jì)成為類(lèi)的函數(shù)成員,然后在主函數(shù)中聲明創(chuàng)建類(lèi)對(duì)象,根據(jù)實(shí)際需要調(diào)用重要的算法。由于C+的使用具有一定的難度,為了同學(xué)更好的學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)自身的知識(shí)內(nèi)容,減輕描述工具所帶來(lái)的困難,這里針對(duì)數(shù)據(jù)結(jié)構(gòu)上機(jī)實(shí)驗(yàn)所必須的C+基本知識(shí)(結(jié)構(gòu)體、類(lèi)等等)做補(bǔ)充介紹。#include . /編譯預(yù)處理class A .;/ 類(lèi)成員函數(shù)定義;.int main().編譯預(yù)處理等類(lèi)的相關(guān)程序編碼主函數(shù)程序代碼一、 源程序組成 這部分內(nèi)容詳細(xì)參見(jiàn)本指導(dǎo)書(shū)的第3部分的程序?qū)嵗6?、結(jié)構(gòu)體
9、及運(yùn)用數(shù)據(jù)結(jié)構(gòu)課程所研究的問(wèn)題均運(yùn)用到“結(jié)構(gòu)體”和“類(lèi)”。在C+語(yǔ)言中結(jié)構(gòu)體和函數(shù)又是理解和掌握“類(lèi)”的語(yǔ)法基礎(chǔ)。定義結(jié)構(gòu)體的一般格式:struct 結(jié)構(gòu)體類(lèi)型名 類(lèi)型名1 變量名1; /數(shù)據(jù)子域類(lèi)型名2 變量名2;類(lèi)型名n 變量名n;其中struct是保留字。結(jié)構(gòu)體類(lèi)型名由用戶(hù)自己命名。在使用時(shí)必須聲明一個(gè)具體的結(jié)構(gòu)體類(lèi)型的變量,聲明創(chuàng)建一個(gè)結(jié)構(gòu)體變量的方法是: 結(jié)構(gòu)體類(lèi)型名 結(jié)構(gòu)體變量名;一個(gè)結(jié)構(gòu)體中可以包含多個(gè)數(shù)據(jù)子域。數(shù)據(jù)子域的類(lèi)型名一般指基本數(shù)據(jù)類(lèi)型(int char 等),也可是已經(jīng)定義的另一結(jié)構(gòu)體名。數(shù)據(jù)子域變量名可以是簡(jiǎn)單變量,也可以是數(shù)組。它們也可以稱(chēng)為結(jié)構(gòu)體的數(shù)據(jù)成員,它們
10、的訪(fǎng)問(wèn)控制具有公有屬性。1. 通過(guò)“結(jié)構(gòu)體變量名.數(shù)據(jù)子域” 可以訪(fǎng)問(wèn)數(shù)據(jù)子域。 / 設(shè)計(jì)Student結(jié)構(gòu)體,在主程序中運(yùn)用。#include <iostream.h>#include <conio.h>#include <string.h>struct Student /定義結(jié)構(gòu)體Student long num; / 學(xué)號(hào) int x; / 成績(jī) char name10; / 姓名int main( ) Student s1; /聲明創(chuàng)建一個(gè)結(jié)構(gòu)體變量s1或者使用鍵盤(pán)輸入 cin >> s1.num;cin >> s1.x;ci
11、n >> ;/為s1的數(shù)據(jù)子域提供數(shù)據(jù)s1.num=1001 ; s1. x=83; strcpy( , “ 李 明”); /輸出結(jié)構(gòu)體變量s1 的內(nèi)容cout<< “ 姓名: ”<< <<endl;cout<< “ 學(xué)號(hào): ”<< s1.num<<endl:cout<< “ 成績(jī):”<< s1.x <<ednl; _getch(); return 0; 2. 設(shè)計(jì)一維數(shù)組,每個(gè)數(shù)組元素是Student結(jié)構(gòu)體類(lèi)型,通過(guò)以下語(yǔ)句段可以
12、說(shuō)明結(jié)構(gòu)體數(shù)組的一般用法:通過(guò)“結(jié)構(gòu)體數(shù)組名下標(biāo).數(shù)據(jù)子域”訪(fǎng)問(wèn)數(shù)據(jù)域。 Student a5; /聲明創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組a for(int i=0, i<5, i+) cout<<“學(xué)號(hào):”; cin>>ai.num; /輸出數(shù)組元素ai的學(xué)號(hào)域cout<<“姓名:”; cin>> ; /輸出數(shù)組元素ai的姓名域cout<<“成績(jī):”; cin>>ai.x; /輸出數(shù)組元素ai的成績(jī)域 以上是關(guān)于結(jié)構(gòu)體的基本概念和簡(jiǎn)單運(yùn)用。三、 類(lèi)的基本概念及運(yùn)用類(lèi)的是面向?qū)ο蟪绦虻幕締挝?。?lèi)是由數(shù)據(jù)成員和相關(guān)的函
13、數(shù)成員組成。從面向?qū)ο蟮慕嵌瓤紤]“學(xué)生”這個(gè)類(lèi),它不僅包括“學(xué)生”的一般屬性:學(xué)號(hào)、姓名、成績(jī)等等,還應(yīng)包括對(duì)于這些屬性的操作:輸入/輸出、聽(tīng)課、實(shí)驗(yàn)、等等。 類(lèi)定義的一般格式:class 類(lèi)名 若干數(shù)據(jù)成員; 若干函數(shù)成員; ;類(lèi)的數(shù)據(jù)成員和函數(shù)成員均存在訪(fǎng)問(wèn)控制權(quán)限問(wèn)題。訪(fǎng)問(wèn)控制分為三種:公有(public)、私有(private)和受護(hù)(protected)。數(shù)據(jù)成員的定義和結(jié)構(gòu)體中的數(shù)據(jù)域定義是相似的。不同的是它們必須明確訪(fǎng)問(wèn)控制。而公有數(shù)據(jù)成員,可以認(rèn)為與結(jié)構(gòu)體的數(shù)據(jù)域的訪(fǎng)問(wèn)權(quán)限相同。成員函數(shù)的定義又和一般函數(shù)的定義基本相同。不同的是類(lèi)中成員函數(shù)也必須明確訪(fǎng)問(wèn)控制權(quán)限。如果在類(lèi)之中定
14、義成員函數(shù)帶函數(shù)體,并未有什么特殊之處。如果在類(lèi)之中僅有成員函數(shù)的原型聲明,當(dāng)在類(lèi)定義之外定義函數(shù)體時(shí),需要加上類(lèi)限定標(biāo)識(shí)“類(lèi)名:”。下面是“學(xué)生”類(lèi)的定義:class Students /定義類(lèi)結(jié)構(gòu)體Students private: /私有成員long num; / 學(xué)號(hào) int x; / 成績(jī) char name10; / 姓名public: /公有成員 Students(); Students() ; void SetDat( long n, int x0, char *na0 ) num=n; x=x0; strcpy( name,na0); void PrintOut( ); /輸
15、出函數(shù)的原型聲明 .;void Students:PrintOut( ) / 輸出函數(shù)前加Students: cout<< “ 姓名: ”<< name <<endl;cout<< “ 學(xué)號(hào): ”<< num<<endl:cout<< “ 成績(jī):”<< x <<ednl; 在主程序中運(yùn)用類(lèi) S main( ) Students s; /聲明創(chuàng)建一個(gè)類(lèi)對(duì)象s,調(diào)用構(gòu)造函數(shù)s.PrintOut( ); /輸出s的內(nèi)容long m; int y; char xname10
16、; cout<< “ 輸入學(xué)號(hào),成績(jī),姓名:” ;cin>>m>>y>>xname;s. SetDat( m, y, xname ) ; /修改對(duì)象s數(shù)據(jù) s. PrintOut(); /輸出改變后s的內(nèi)容_getch(); return 0;運(yùn)行結(jié)果: 姓名:O學(xué)號(hào):0成績(jī):0 輸入學(xué)號(hào),成績(jī),姓名:1001 90 WangMing姓名:WangMing學(xué)號(hào):1001成績(jī):90這個(gè)例題中數(shù)據(jù)成員全部定義為私有(private),以便保證數(shù)據(jù)安全性。而函數(shù)成員全部定義為公有(public)成員函數(shù),可以作為類(lèi)對(duì)外部的的接口。 通過(guò)s. SetDa
17、t( m, y, xname ) ; 直接訪(fǎng)公有函數(shù)成員SetDat( ), 將實(shí)參(主函數(shù)的局部變量m, y, xname) 的數(shù)據(jù)賦給私有數(shù)據(jù)成員 num,x,name。 通過(guò) s.PrintOut( );直接訪(fǎng)公有函數(shù)成員PrintOut( ),間接訪(fǎng)問(wèn)輸出私有成員num,x,name。四、 結(jié)構(gòu)體在類(lèi)中的使用 1結(jié)構(gòu)體數(shù)組做類(lèi)的數(shù)據(jù)成員const int MAXSIZE=100; / 數(shù)組的容量struct ElemType / 數(shù)據(jù)元素的類(lèi)型 int numb; char name20; long tel; ;class Sqlist private: ElemType elemMA
18、XSIZE; /結(jié)構(gòu)體ElemType類(lèi)型的數(shù)組elem 做數(shù)據(jù)成員 int length; public: Sqlist( void); Sqlist() ;/其他函數(shù);2.結(jié)構(gòu)體指針變量做類(lèi)的數(shù)據(jù)成員struct NodeType / 結(jié)點(diǎn)的結(jié)構(gòu)定義 int data; / 數(shù)據(jù)域 NodeType *next; / 指針域 ;class Link /類(lèi)聲明 private: NodeType *Head; /指向結(jié)構(gòu)構(gòu)體NodeType的指針變量Head做數(shù)據(jù)成員 public: Link ( ) Head=new NodeType; / 為頭結(jié)點(diǎn)申請(qǐng)空間 Head->next=H
19、ead; / 頭結(jié)點(diǎn)Head 形成空環(huán) ;Head Link () ; void creat(); void outs();實(shí)驗(yàn)一:關(guān)于抽象數(shù)據(jù)類(lèi)型ADT的實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康募耙?.熟悉C+環(huán)境(DEVC+),理解抽象數(shù)據(jù)類(lèi)型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í)驗(yàn)準(zhǔn)備1. 計(jì)算機(jī)設(shè)備;2. 程序調(diào)試環(huán)境的準(zhǔn)備,如Devc+環(huán)境;3.
20、實(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ǔ)無(wú)關(guān),是獨(dú)立于計(jì)算機(jī)的。ü 有四大類(lèi):集合、線(xiàn)性結(jié)構(gòu)、樹(shù)型結(jié)構(gòu)、圖型結(jié)構(gòu)。線(xiàn)性結(jié)構(gòu)的邏輯特征是:若結(jié)構(gòu)是非空集,則符合以下四個(gè)特征:l 有且
21、僅有一個(gè)表頭結(jié)點(diǎn);l 有且僅有一個(gè)表尾結(jié)點(diǎn);l 除了表頭結(jié)點(diǎn),其余結(jié)點(diǎn)均有且僅有一個(gè)直接前驅(qū);l 除了表尾結(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ī)語(yǔ)言的實(shí)現(xiàn),即建立計(jì)算機(jī)的機(jī)內(nèi)表示,在存儲(chǔ)空間中建立各結(jié)點(diǎn)之間的關(guān)聯(lián)來(lái)表示數(shù)據(jù)元素之間的邏輯關(guān)系。ü 數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)主要有順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)兩大類(lèi)。l 順序存儲(chǔ)結(jié)構(gòu)中的元素都依次存儲(chǔ)在一個(gè)連續(xù)的區(qū)域中,元素的物理地址就體現(xiàn)了元素的邏輯關(guān)系。l 鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中的結(jié)點(diǎn)不僅包含一個(gè)數(shù)據(jù)元素,還包含一個(gè)指針,指向該元素邏輯上的直接后繼結(jié)點(diǎn)。(4)數(shù)據(jù)結(jié)構(gòu)的運(yùn)算1)創(chuàng)建運(yùn)算(cr
22、eate):創(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)中搜索滿(mǎn)足一定條件的元素;6)更新運(yùn)算(replace):修改數(shù)據(jù)結(jié)構(gòu)中某個(gè)元素的值;7)訪(fǎng)問(wèn)運(yùn)算(retrieve):訪(fǎng)問(wèn)數(shù)據(jù)結(jié)構(gòu)中某個(gè)元素;8)遍歷運(yùn)算(traverse):按照某種次序,系統(tǒng)地訪(fǎng)問(wèn)數(shù)據(jù)結(jié)構(gòu)的各元素,使得每個(gè)元素恰好被訪(fǎng)問(wèn)一次。(5)數(shù)據(jù)結(jié)構(gòu)的規(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):是指
23、它的存儲(chǔ)表示和運(yùn)算的實(shí)現(xiàn)。2復(fù)數(shù)復(fù)數(shù)的代數(shù)形式:形如a + bi (a,bR)的數(shù)叫復(fù)數(shù),實(shí)數(shù)a、b 分別叫做實(shí)部和虛部。試設(shè)計(jì)一個(gè)復(fù)數(shù)類(lèi),該類(lèi)有實(shí)部和虛部?jī)蓚€(gè)成員數(shù)據(jù),成員數(shù)據(jù)采用私有訪(fǎng)問(wèn)權(quán)限,同時(shí)該類(lèi)有兩個(gè)共有成員函數(shù)。設(shè)z1=a+bi,z2=c+di是任意兩個(gè)復(fù)數(shù),復(fù)數(shù)的四則運(yùn)算規(guī)定為: z1+z2(ac)(bd)i,z1-z2(ac)(bd)i,z1*z2(acbd)(bcad)i, z1/z2(ac+bd) / (c2+d2)(bcad) / (c2+d2) i.3集合 是一些可確定的可相互區(qū)別的事物(同種類(lèi)型的數(shù)據(jù)元素)匯集在一起所組成的整體。集合的元素具有以下三個(gè)性質(zhì):(1)確定
24、性元素與集合的關(guān)系是屬于或不屬于,二者必居其一(2)互異性集合中元素彼此不同,沒(méi)有重復(fù)的元素。(3)無(wú)序性集合中的元素與排列順序無(wú)關(guān)。 并、交、差是集合常用的運(yùn)算。五、設(shè)計(jì)與實(shí)現(xiàn)1復(fù)數(shù)的有關(guān)操作(1)復(fù)數(shù)的ADT ADT complex 數(shù)據(jù)對(duì)象:De1,e2e1,e2RealSet 數(shù)據(jù)關(guān)系:R1<e1,e2> | e1是復(fù)數(shù)的實(shí)數(shù)部分,e2 是復(fù)數(shù)的虛數(shù)部分 運(yùn)算: InitComplex (v1, v2 ) 操作結(jié)果:構(gòu)造一復(fù)數(shù),其實(shí)部和虛部分別被賦以參數(shù)v1和v2的值。 DestroyComplex() 操作結(jié)果:復(fù)數(shù)被銷(xiāo)毀。 GetReal(&realPart )
25、 初始條件:復(fù)數(shù)已存在。 操作結(jié)果:用realPart返回復(fù)數(shù)的實(shí)部值。 GetImag(&ImagPart ) 初始條件:復(fù)數(shù)已存在。 操作結(jié)果:用ImagPart返回復(fù)數(shù)的虛部值。 Add(z1,z2) 初始條件:z1, z2是復(fù)數(shù)。 操作結(jié)果:返回兩個(gè)復(fù)數(shù)z1、z2的和值。 ADT Complex (2)復(fù)數(shù)類(lèi)模板的定義(XXXX.h,如complex.h)template <class T>class Complexprivate: T real,imag; public: Complex(); Complex(T r,T i); T Getreal()const;
26、 T Getimag()const; Complex<T> Add(Complex &c); /其他運(yùn)算 Complex<T> operator+(Complex &c); /其他運(yùn)算重載 void Output(ostream& out); void Input(istream& in);(3)復(fù)數(shù)類(lèi)模板中成員函數(shù)的實(shí)現(xiàn)(complex.cpp)(4)主程序模塊定義 在沒(méi)有學(xué)習(xí)可視化圖形界面之前,建議在主函數(shù)中簡(jiǎn)單設(shè)計(jì)一個(gè)“菜單”(do-while循環(huán)內(nèi)嵌套一個(gè) switch結(jié)構(gòu))。隨著學(xué)習(xí)的深入,應(yīng)該學(xué)會(huì)熟練使用“菜單”技術(shù),這樣會(huì)明顯提高編程和運(yùn)行效率。一個(gè)主函數(shù)一般樣式如下:(參考代碼) do /顯示菜單內(nèi)容 cout<<"=歡迎使用復(fù)數(shù)運(yùn)算系統(tǒng)=n&qu
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)護(hù)士考試常見(jiàn)藥物查詢(xún)?cè)囶}與答案
- 2025年語(yǔ)文考試復(fù)習(xí)的成功經(jīng)驗(yàn)試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試主觀(guān)題試題及答案
- 努力前行衛(wèi)生資格考試試題及答案
- 行政法與社會(huì)服務(wù)模式再造的聯(lián)系試題及答案
- 行政法學(xué)的法律適用與實(shí)踐指導(dǎo)試題及答案
- 2025年經(jīng)濟(jì)法概論測(cè)試模擬試題及答案
- 2025年經(jīng)濟(jì)法考試模擬試卷試題及答案
- 2025年主管護(hù)師考試全方位試題及答案
- 為2025年經(jīng)濟(jì)法概論考試準(zhǔn)備的試題與答案
- 實(shí)+用法律基礎(chǔ)-形成性考核任務(wù)一-國(guó)開(kāi)(ZJ)-參考資料
- 農(nóng)業(yè)昆蟲(chóng)學(xué)-形考測(cè)試一-國(guó)開(kāi)(ZJ)-參考資料
- 環(huán)保組織項(xiàng)目監(jiān)督管理制度
- GB/T 23473-2024林業(yè)植物及其產(chǎn)品調(diào)運(yùn)檢疫規(guī)程
- 山東虛擬電廠(chǎng)商業(yè)模式介紹
- 低分子肝素注射方法
- 人教版八年級(jí)體育 1.2常見(jiàn)運(yùn)動(dòng)損傷的預(yù)防和緊急處理 教案
- 【課件】在奉獻(xiàn)中成就精彩人生 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2024至2030年成都市酒店市場(chǎng)前景調(diào)查及投資研究報(bào)告
- 網(wǎng)絡(luò)安全保障服務(wù)方案(網(wǎng)絡(luò)安全運(yùn)維、重保服務(wù))
- 創(chuàng)傷愈合的相關(guān)知識(shí)
評(píng)論
0/150
提交評(píng)論