數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)-實(shí)驗(yàn)指導(dǎo)書(shū)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)-實(shí)驗(yàn)指導(dǎo)書(shū)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)-實(shí)驗(yàn)指導(dǎo)書(shū)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)-實(shí)驗(yàn)指導(dǎo)書(shū)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)與算法實(shí)習(xí)-實(shí)驗(yàn)指導(dǎo)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)據(jù)結(jié)構(gòu)與算法課程實(shí)習(xí)實(shí)驗(yàn)指導(dǎo)書(shū) 上海第二工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院軟件工程系目錄實(shí)驗(yàn)一 順序表的基本操作2實(shí)驗(yàn)二 鏈表的基本操作3實(shí)驗(yàn)三 二叉樹(shù)的基本操作4實(shí)驗(yàn)四 綜合應(yīng)用5附錄A 實(shí)驗(yàn)報(bào)告示例10附錄B 實(shí)驗(yàn)報(bào)告封面、評(píng)語(yǔ)得分表13附錄C 最后要提交的文檔形式15實(shí)驗(yàn)一 順序表的基本操作【實(shí)驗(yàn)?zāi)康摹?1、 掌握順序存儲(chǔ)的概念,學(xué)會(huì)對(duì)順序表的基本操作。2、 加深對(duì)順序存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的理解,逐步培養(yǎng)解決實(shí)際問(wèn)題的能力。【實(shí)驗(yàn)性質(zhì)】 設(shè)計(jì)型實(shí)驗(yàn) 【實(shí)驗(yàn)內(nèi)容】 1、實(shí)現(xiàn)順序表顯示; 2、實(shí)現(xiàn)順序表插入; 3、實(shí)現(xiàn)順序表查找(顯示比較次數(shù)); 4、實(shí)現(xiàn)順序表刪除(顯示移動(dòng)次數(shù)); 5、實(shí)現(xiàn)順序表排序(分

2、別實(shí)現(xiàn)簡(jiǎn)單選擇、快速,顯示比較次數(shù)、移動(dòng)次數(shù)); 6、實(shí)現(xiàn)順序表的折半查找(顯示比較次數(shù)); 7、編程實(shí)現(xiàn)一個(gè)順序表的就地逆置,即利用原表的存儲(chǔ)空間將順序表逆置; 8、順序表有序插入(顯示比較次數(shù)、移動(dòng)次數(shù)), 屏幕提示后,從鍵盤(pán)輸入一個(gè)元素值,在經(jīng)過(guò)排序的線(xiàn)性表中插入這個(gè)元素; 屏幕顯示比較次數(shù)和移動(dòng)次數(shù),應(yīng)有溢出判斷和報(bào)告; 9、要求以較高的效率實(shí)現(xiàn)刪除順序表中元素值在x到y(tǒng)(x和y自定)之間的所有元素; 10、編程實(shí)現(xiàn)將兩個(gè)非遞減的順序表進(jìn)行合并,要求同樣的數(shù)據(jù)元素只出現(xiàn)一次; *11、編程實(shí)現(xiàn)順序表的shell排序(步長(zhǎng)為5,3,1); *12、編程實(shí)現(xiàn)堆排序算法; *13、利用三元組

3、順序表存儲(chǔ)矩陣,實(shí)現(xiàn)矩陣的轉(zhuǎn)置(請(qǐng)獨(dú)立寫(xiě)程序?qū)崿F(xiàn))?!緦?shí)驗(yàn)環(huán)境】 VC+ 6.0【實(shí)驗(yàn)要求】 將如上文件保存在命名為“學(xué)號(hào)+姓名”的文件夾中并上傳到指定的服務(wù)器。實(shí)驗(yàn)二 鏈表的基本操作【實(shí)驗(yàn)?zāi)康摹?1、 掌握鏈表的概念,學(xué)會(huì)對(duì)鏈表進(jìn)行操作。2、 加深對(duì)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的理解,逐步培養(yǎng)解決實(shí)際問(wèn)題的編程能力。 【實(shí)驗(yàn)性質(zhì)】 設(shè)計(jì)型實(shí)驗(yàn) 【實(shí)驗(yàn)內(nèi)容】 1、實(shí)現(xiàn)單鏈表的創(chuàng)建; 2、實(shí)現(xiàn)單鏈表的顯示; 3、實(shí)現(xiàn)單鏈表的查找(顯示比較次數(shù)); 4、實(shí)現(xiàn)單鏈表的插入; 5、實(shí)現(xiàn)單鏈表的刪除(顯示比較次數(shù)); 6、對(duì)已創(chuàng)建的鏈表(數(shù)據(jù)不限)進(jìn)行直接插入排序; 7、將鏈接存儲(chǔ)線(xiàn)性表逆置,即最后一個(gè)結(jié)點(diǎn)變成第1個(gè)結(jié)

4、點(diǎn),原來(lái)倒數(shù)第2個(gè)結(jié)點(diǎn)變成第2個(gè)結(jié)點(diǎn),如此等等; 8、生成有序的兩個(gè)單鏈表A和B(鏈表的數(shù)據(jù)和個(gè)數(shù)自定),其首結(jié)點(diǎn)指針?lè)謩e為a和b,要求將兩個(gè)單鏈表合并為一個(gè)有序的單鏈表C,其首結(jié)點(diǎn)指針為c,并且合并后的單鏈表的數(shù)據(jù)不重復(fù); 9、將一個(gè)首結(jié)點(diǎn)指針為a的單鏈表A分解成兩個(gè)單鏈表A和B,其首結(jié)點(diǎn)指針?lè)謩e為a和b,使得鏈表A中含有原鏈表A中序號(hào)為奇數(shù)的元素,而鏈表B中含有原鏈表A中序號(hào)為偶數(shù)的元素,且保持原來(lái)的相對(duì)順序; 10、請(qǐng)編程實(shí)現(xiàn)鏈棧的基本操作函數(shù),并通過(guò)調(diào)用這些基本函數(shù),實(shí)現(xiàn)十進(jìn)制和八進(jìn)制轉(zhuǎn)換的功能?!緦?shí)驗(yàn)環(huán)境】 VC+ 6.0【實(shí)驗(yàn)要求】 將如上文件保存在命名為“學(xué)號(hào)+姓名”的文件夾中并

5、上傳到指定的服務(wù)器。實(shí)驗(yàn)三 二叉樹(shù)的基本操作【實(shí)驗(yàn)?zāi)康摹?1、 掌握二叉樹(shù)的概念,學(xué)會(huì)對(duì)二叉鏈表進(jìn)行操作。2、 加深對(duì)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的理解,逐步培養(yǎng)解決實(shí)際問(wèn)題的編程能力?!緦?shí)驗(yàn)性質(zhì)】 設(shè)計(jì)型實(shí)驗(yàn) 【實(shí)驗(yàn)內(nèi)容】 1、實(shí)現(xiàn)二叉樹(shù)的創(chuàng)建; 2、用遞歸方法分別先序、中序、后序遍歷以Tree為根指針的二叉樹(shù); 3、編寫(xiě)遞歸算法,計(jì)算二叉樹(shù)中葉子結(jié)點(diǎn)的數(shù)目; 4、編寫(xiě)遞歸算法,計(jì)算二叉樹(shù)的深度; 5、編寫(xiě)遞歸算法,將二叉樹(shù)中所有結(jié)點(diǎn)的左、右子樹(shù)相互交換; 6、使用數(shù)組elem中的隨機(jī)數(shù)序列(以0表示結(jié)束,不包括0),生成以Tree為根指針的二叉排序樹(shù); 7、在以Tree為根指針的二叉排序樹(shù)中查找結(jié)點(diǎn); 8

6、、從以Tree為根指針的二叉排序樹(shù)中刪除結(jié)點(diǎn)(適用各種位置的結(jié)點(diǎn)); 9、用非遞歸算法,先序遍歷以Tree為根指針的二叉樹(shù); 提示:用數(shù)組 BiTNode *stackmax 構(gòu)成堆棧,利用這個(gè)堆棧實(shí)現(xiàn)功能。 10、用凹入表示法的表示以Tree為根指針的二叉樹(shù),例如:/ 324/ 123/ 746/ 690/ 567 11、用廣義表表示以Tree為根指針的二叉樹(shù),例如/ (324(123(746,690),567) 12、對(duì)以Tree為根指針的二叉樹(shù),從根結(jié)點(diǎn)開(kāi)始,逐層從左到右輸出各結(jié)點(diǎn)的數(shù)據(jù)。 提示:用數(shù)組 BiTNode *queuemax 構(gòu)成隊(duì)列,利用這個(gè)隊(duì)列實(shí)現(xiàn)功能 13、根據(jù)Huf

7、fman編碼原理,使用數(shù)組elem中的隨機(jī)數(shù)序列(以0表示結(jié)束,不包括0)作為結(jié)點(diǎn)的權(quán)重,生成赫夫曼樹(shù),以及赫夫曼編碼,計(jì)算平均帶權(quán)徑長(zhǎng)度。 14、(1)隨機(jī)生成二叉樹(shù)。 (2)生成并保存先(后)序、中序輸出序列。 (3)按照保存的一對(duì)輸出序列恢復(fù)出二叉樹(shù)。(4)生成先(后)序輸出序列。【實(shí)驗(yàn)環(huán)境】 VC+ 6.0【實(shí)驗(yàn)要求】 將如上文件保存在命名為“學(xué)號(hào)+姓名”的文件夾中并上傳到指定的服務(wù)器。實(shí)驗(yàn)四 綜合應(yīng)用一、運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)問(wèn)題描述參加運(yùn)動(dòng)會(huì)的n個(gè)學(xué)校編號(hào)為1n。比賽分成m個(gè)男子項(xiàng)目和w個(gè)女子項(xiàng)目,項(xiàng)目編號(hào)分別為1m和m+1m+w。由于各項(xiàng)目參加人數(shù)差別較大,有些項(xiàng)目取前五名,得分順序?yàn)?

8、,5,3,2,1;還有些項(xiàng)目只取前三名,得分順序?yàn)?,3,2。寫(xiě)一個(gè)統(tǒng)計(jì)程序產(chǎn)生各種成績(jī)單和得分報(bào)表。基本要求產(chǎn)生各學(xué)校的成績(jī)單,內(nèi)容包括各校所取得的每項(xiàng)成績(jī)的項(xiàng)目號(hào)、名次(成績(jī))、姓名和得分;產(chǎn)生團(tuán)體總分報(bào)表,內(nèi)容包括校號(hào)、男子團(tuán)體總分、女子團(tuán)體總分和團(tuán)體總分。測(cè)試數(shù)據(jù)對(duì)于n=4,m=3,w=2,編號(hào)為奇數(shù)的項(xiàng)目取前五名,編號(hào)為偶數(shù)的項(xiàng)目取前三名,設(shè)計(jì)一組實(shí)例數(shù)據(jù)。實(shí)現(xiàn)提示可以假設(shè)n<=20,m<=30,w<=20,姓名長(zhǎng)度不超過(guò)20個(gè)字符。每個(gè)項(xiàng)目結(jié)束時(shí),將其編號(hào)、類(lèi)型符(區(qū)分取前五名還是前三名)輸入,并按名次順序輸入運(yùn)動(dòng)員姓名、校名(和成績(jī))。選作內(nèi)容允許用戶(hù)指定某項(xiàng)目

9、采取其他名次取法。二、一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器問(wèn)題描述設(shè)計(jì)一個(gè)一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器基本要求一元稀疏多項(xiàng)式簡(jiǎn)單計(jì)算器的基本功能是:(1)輸入并建立多項(xiàng)式;(2)輸出多項(xiàng)式,輸出形式為整數(shù)序列:n,c1,e1,c2,e2,cn,en,其中n是多項(xiàng)式的項(xiàng)數(shù),ci和ei分別是第i項(xiàng)的系數(shù)和指數(shù),序列按指數(shù)降序排列;(3)多項(xiàng)式a和b相加,建立多項(xiàng)式a+b;(4)多項(xiàng)式a和b相減,建立多項(xiàng)式a-b。測(cè)試數(shù)據(jù)(1)(2x+5x3-3.1x11)+(7-5x8+11x9)=(-3.1x11+11x9+2x+7)(2)(6x-3-X+4.4X2-1.2X9)-(-6X-3+5.4X2-X2+7.8X15)

10、=(-7.8X15-1.2X9+12X-3-X)(3)(1+X+X2+X3+X4+X5)+(-X3-X4)=(1+X+X2+X5)(4)(X+X3)+(-X-X3)=0實(shí)現(xiàn)提示用帶表頭結(jié)點(diǎn)的單鏈表存儲(chǔ)多項(xiàng)式。選作內(nèi)容(1) 計(jì)算多項(xiàng)式在X處的值。(2) 計(jì)算多項(xiàng)式a的導(dǎo)函數(shù)a。(3) 多項(xiàng)式a和b相乘,建立乘積多項(xiàng)式ab。(4) 多項(xiàng)式的輸出形式為類(lèi)數(shù)學(xué)表達(dá)式。例如,多項(xiàng)式-3x8+6x3-18的輸出形式為-3x8+6x3-18。注意,系數(shù)為1的非零次項(xiàng)的輸出形式中略去系數(shù)1,如1x8的輸出形式為x8。(5) 計(jì)算器的仿真界面。三、停車(chē)場(chǎng)管理問(wèn)題描述設(shè)停車(chē)場(chǎng)是一個(gè)可停放n輛汽車(chē)的狹長(zhǎng)通道,且只

11、有一個(gè)大門(mén)可供汽車(chē)進(jìn)出。汽車(chē)在停車(chē)場(chǎng)內(nèi)按車(chē)輛到達(dá)時(shí)間的先后順序,依次由北向南排列(大門(mén)在最南端,最先到達(dá)的第一輛停放在車(chē)場(chǎng)的最北端),若車(chē)廠內(nèi)已停滿(mǎn)n輛汽車(chē),則后來(lái)的汽車(chē)只能在門(mén)外的便道上等候,一旦有車(chē)開(kāi)走,則排在便道上的第一輛車(chē)即可開(kāi)入;當(dāng)停車(chē)場(chǎng)內(nèi)某輛車(chē)要離開(kāi)時(shí),在它之后進(jìn)入的車(chē)輛必須先退出車(chē)場(chǎng)為它讓路,待該輛車(chē)開(kāi)出大門(mén)外,其他車(chē)輛再按原次序進(jìn)入車(chē)場(chǎng),每輛停放在車(chē)場(chǎng)的車(chē)在它離開(kāi)停車(chē)場(chǎng)時(shí)必須按它停留的時(shí)間長(zhǎng)短繳納費(fèi)用。試為停車(chē)場(chǎng)編制按上述要求進(jìn)行管理的模擬程序。基本要求以棧模擬停車(chē)場(chǎng),以隊(duì)列模擬車(chē)場(chǎng)外的便道,按照從終端讀入的輸入數(shù)據(jù)序列進(jìn)行模擬管理。每一組輸入數(shù)據(jù)包括三個(gè)數(shù)據(jù)項(xiàng):汽車(chē)“到達(dá)”或

12、“離去”信息、汽車(chē)牌照號(hào)碼以及到達(dá)或離去的時(shí)刻。對(duì)每一組輸入數(shù)據(jù)進(jìn)行操作后的輸出信息為:若是車(chē)輛到達(dá),則輸出汽車(chē)在停車(chē)場(chǎng)內(nèi)或便道上的停車(chē)位置;若是車(chē)輛離去,則輸出汽車(chē)在停車(chē)場(chǎng)內(nèi)停留的時(shí)間和應(yīng)繳納的費(fèi)用(在便道上停留的時(shí)間不收費(fèi))。/棧以順序結(jié)構(gòu)實(shí)現(xiàn),隊(duì)列以鏈表結(jié)構(gòu)實(shí)現(xiàn)。測(cè)試數(shù)據(jù)設(shè)n=2,輸入數(shù)據(jù)為(A,1,5),(A,2,10),(D,1,15),(A,3,20),(A,4,25),(A,5,30),(D,2,35),(D,4,40),(E,0,0)。其中A表示到達(dá);D表示離去;E表示結(jié)束。實(shí)現(xiàn)提示需另設(shè)一個(gè)棧,臨時(shí)停放為給要離去的汽車(chē)讓路而從停車(chē)場(chǎng)退出來(lái)的汽車(chē),也用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)。輸入數(shù)據(jù)

13、按到達(dá)或離去的時(shí)刻有序。棧中每個(gè)元素表示一輛汽車(chē),包含兩個(gè)數(shù)據(jù)項(xiàng):汽車(chē)牌照號(hào)碼和進(jìn)入停車(chē)場(chǎng)的時(shí)刻。選作內(nèi)容(1) 兩個(gè)棧共享空間,思考應(yīng)開(kāi)辟數(shù)組的空間是多少。(2) 汽車(chē)可有不同種類(lèi),則他們的占地面積不同,收費(fèi)標(biāo)準(zhǔn)也不同,如1輛客車(chē)和1.5輛小汽車(chē)的占地面積相同,1輛十輪卡車(chē)占地面積相當(dāng)于3輛小汽車(chē)的占地面積。(3) 汽車(chē)可以直接從便道上開(kāi)走,此時(shí)排在它前面的汽車(chē)要先開(kāi)走讓路,然后再依次排到隊(duì)尾。(4) 停放在便道上的汽車(chē)也收費(fèi),收費(fèi)標(biāo)準(zhǔn)比停放在停車(chē)場(chǎng)的車(chē)低,請(qǐng)思考如何修改結(jié)構(gòu)以滿(mǎn)足這種要求。四、航空客運(yùn)訂票系統(tǒng)問(wèn)題描述航空客運(yùn)訂票的業(yè)務(wù)活動(dòng)包括:查詢(xún)航線(xiàn)、客票預(yù)訂和辦理退票等。試設(shè)計(jì)一個(gè)航空

14、客運(yùn)訂票系統(tǒng),以使上述業(yè)務(wù)可以借助計(jì)算機(jī)來(lái)完成?;疽螅?) 每條航線(xiàn)所涉及的信息有:終點(diǎn)站名、航班號(hào)、飛機(jī)型號(hào)、飛行周日(星期幾)、乘員定額?、余票量、已定票的客戶(hù)名單(包括姓名、訂票量、艙位等級(jí)1,2或3)以及等候替補(bǔ)的客戶(hù)名單(包括姓名、所需票量);(2) 作為示意系統(tǒng),全部數(shù)據(jù)可以只放在內(nèi)存中;(3) 系統(tǒng)能實(shí)現(xiàn)的操作和功能如下:查詢(xún)航線(xiàn):根據(jù)旅客提出的終點(diǎn)站名輸出下列信息:航班號(hào)、飛機(jī)號(hào)、星期幾飛行,最近一天航班的日期和余票額;承辦定票業(yè)務(wù):根據(jù)客戶(hù)提出的要求(航班號(hào)、訂票數(shù)額)查詢(xún)?cè)摵桨嗥鳖~情況,若尚有余票,則為客戶(hù)辦理訂票手續(xù),輸出座位號(hào);若以滿(mǎn)員或余票額少于定票額,則需重新詢(xún)

15、問(wèn)客戶(hù)要求。若需要,可登記排隊(duì)候補(bǔ);承辦退票業(yè)務(wù):根據(jù)客戶(hù)提供的情況(日期、航班),為客戶(hù)辦理退票手續(xù),然后查詢(xún)?cè)摵桨嗍欠裼腥伺抨?duì)候補(bǔ),首先詢(xún)問(wèn)排在第一的客戶(hù),若所退票額能滿(mǎn)足他的要求,則為他辦理訂票手續(xù),否則依次詢(xún)問(wèn)其他排隊(duì)候補(bǔ)的客戶(hù)。測(cè)試數(shù)據(jù)自行指定。實(shí)現(xiàn)提示兩個(gè)客戶(hù)名單可分別由線(xiàn)性表和隊(duì)列實(shí)現(xiàn)。為查找方便,已訂票客戶(hù)的線(xiàn)性表應(yīng)按客戶(hù)姓名有序,并且,為插入和刪除方便,應(yīng)以鏈表作為存儲(chǔ)結(jié)構(gòu),由于預(yù)約人數(shù)無(wú)法預(yù)計(jì),隊(duì)列也應(yīng)以鏈表作為存儲(chǔ)結(jié)構(gòu)。整個(gè)系統(tǒng)需匯總各條航線(xiàn)的情況登錄在一張線(xiàn)性表上,由于航線(xiàn)基本不變,可采用順序存儲(chǔ)結(jié)構(gòu),并按航班有序或按終點(diǎn)站名有序。每條航線(xiàn)是這張表上的一個(gè)記錄,包含上述

16、8個(gè)域,其中乘員名單域?yàn)橹赶虺藛T名單鏈表的頭指針,等候替補(bǔ)的客戶(hù)名單域?yàn)榉謩e指向隊(duì)頭和隊(duì)尾的指針。選作內(nèi)容 當(dāng)客戶(hù)訂票要求不能滿(mǎn)足時(shí),系統(tǒng)可向客戶(hù)提供到達(dá)同一目的地的其它航線(xiàn)情況。還可以充分發(fā)揮自己的想象力,增加系統(tǒng)的功能和其他服務(wù)項(xiàng)目。五、簡(jiǎn)單行編輯程序問(wèn)題描述文本編輯程序是利用計(jì)算機(jī)進(jìn)行文字加工的基本軟件工具,實(shí)現(xiàn)對(duì)文本文件的插入、刪除等修改操作。限制這些操作以行為單位進(jìn)行的編輯程序稱(chēng)為行編輯程序。被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內(nèi)存)的做法既不經(jīng)濟(jì),也不總能實(shí)現(xiàn)。一種解決方法是逐段編輯。任何時(shí)刻只能把待編輯的文件的一段放在內(nèi)存中,稱(chēng)為活區(qū)。試按照這種方法實(shí)現(xiàn)一個(gè)簡(jiǎn)單

17、的行編輯程序。設(shè)文件每行不超過(guò)320個(gè)字符,很少超過(guò)80個(gè)字符。基本要求實(shí)現(xiàn)以下4條基本編輯命令:(1) 行插入。格式:i<行號(hào)><回車(chē)><文本>.<回車(chē)>將文本插入活區(qū)中第<行號(hào)>行之后。(2) 行刪除。格式:d<行號(hào)1><空格><行號(hào)2><回車(chē)>刪除活區(qū)中第<行號(hào)1>行(到第<行號(hào)2>行)。例如“d10”和“d10 14”(3) 活區(qū)切換。格式:n<回車(chē)>將活區(qū)寫(xiě)入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。(4) 活區(qū)顯示。格式:p<

18、回車(chē)>逐頁(yè)的(每頁(yè)20行)顯示活區(qū)內(nèi)容,每顯示一頁(yè)之后請(qǐng)用戶(hù)決定是否繼續(xù)顯示以后各頁(yè)(如果存在)。印出的每一行要前置行號(hào)和一個(gè)空格符,行號(hào)固定占4位,增量為1。 各條命令中的行號(hào)均須在活區(qū)中各行行號(hào)范圍之內(nèi),只有插入命令的行號(hào)可以等于活區(qū)第一行行號(hào)減一,表示插入當(dāng)前屏幕中第一行之前,否則命令參數(shù)非法。測(cè)試數(shù)據(jù)自行設(shè)定,注意測(cè)試將活區(qū)刪空等特殊情況。實(shí)現(xiàn)提示(1) 設(shè)活區(qū)的大小用行數(shù)ActiveMaxLen(可設(shè)為100)來(lái)描述。考慮到文本文件行長(zhǎng)通常為正態(tài)分布,且峰值在60到70之間,用320*ActiveMaxLen大小的字符數(shù)組實(shí)現(xiàn)存儲(chǔ)將造成大量浪費(fèi),可以以標(biāo)準(zhǔn)行塊為單位為各行分配存

19、儲(chǔ),每個(gè)標(biāo)準(zhǔn)行塊可含81個(gè)字符。這些行塊可以組成一個(gè)數(shù)組,也可以利用動(dòng)態(tài)鏈表連接起來(lái)。一行文字可能占多個(gè)行塊。行尾可用一個(gè)特殊的ASCII字符(如(012)8)標(biāo)識(shí)。此外,還應(yīng)記住活區(qū)起始行號(hào)。行插入將引起隨后各行行號(hào)的順序下推。(2) 初始化函數(shù)包括:請(qǐng)用戶(hù)提供輸入文件名(空串表示無(wú)輸入文件)和輸出文件名,兩者不能相同。然后盡可能多地從輸入文件中讀入各行,但不超過(guò)ActiveMaxLen-x。x的值可以自定,例如20。(3) 在執(zhí)行行插入命令的過(guò)程中,每接收到一行時(shí)都要檢查活區(qū)大小是否已達(dá)ActiveMaxLen。如果是,則為了在插入這一行之后仍保持活區(qū)大小不超過(guò)ActiveMaxLen,應(yīng)

20、將插入點(diǎn)之前的活區(qū)部分中第一行輸出到輸出文件中;若插入點(diǎn)為第一行之前,則只得將新插入的這一行輸出。(4) 若輸入文件尚未讀完,活區(qū)切換命令可將原活區(qū)中最后幾行留在活區(qū)頂部,以保持閱讀連續(xù)性;否則,它意味著結(jié)束編輯或開(kāi)始編輯另一個(gè)文件。(5) 可令前三條命令執(zhí)行后自動(dòng)調(diào)用活區(qū)顯示。選作內(nèi)容(1) 對(duì)于命令格式非法等一切錯(cuò)誤作嚴(yán)格檢查和適當(dāng)處理。(2) 加入更復(fù)雜的編輯操作,如對(duì)某行進(jìn)行串替換;在活區(qū)內(nèi)進(jìn)行模式匹配等,格式可以為S<行號(hào)><串1><串2><回車(chē)>和m<串><回車(chē)>?!緦?shí)驗(yàn)環(huán)境】 VC+ 6.0【實(shí)驗(yàn)要求】 將如

21、上文件保存在命名為“學(xué)號(hào)+姓名”的文件夾中并上傳到指定的服務(wù)器。附錄A 實(shí)驗(yàn)報(bào)告示例“學(xué)生通訊錄管理系統(tǒng)”的設(shè)計(jì)與實(shí)現(xiàn)一、 設(shè)計(jì)要求1、 問(wèn)題描述紙質(zhì)的通訊錄已經(jīng)不能滿(mǎn)足大家的要求,容易丟失,查找困難等問(wèn)題是紙質(zhì)通訊錄所不能克服的缺點(diǎn)?!皩W(xué)生通訊錄管理系統(tǒng)”是為了幫助老師、同學(xué),或者其它一些需要使用通訊錄的人員進(jìn)行管理和分析的一種應(yīng)用程序。2、 需求分析(1) 輸入數(shù)據(jù)建立通訊錄(2) 查詢(xún)通訊錄中滿(mǎn)足要求的信息(3) 插入新的通訊錄信息(4) 刪除不需要的通訊錄信息(5) 查看所有的通訊錄信息二、 概要設(shè)計(jì)為了實(shí)現(xiàn)需求分析中的功能,可以從3個(gè)方面著手設(shè)計(jì)1、 主界面設(shè)計(jì)為了實(shí)現(xiàn)學(xué)生通訊錄管理

22、系統(tǒng)各功能的管理,設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單子程序以鏈接系統(tǒng)的各項(xiàng)子功能,方便用戶(hù)使用本系統(tǒng)。2、 存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)本系統(tǒng)主要采用鏈表結(jié)構(gòu)類(lèi)型來(lái)表示存儲(chǔ)在“學(xué)生通訊錄管理系統(tǒng)”中的信息。其中,鏈表結(jié)點(diǎn)有4個(gè)分量構(gòu)成:通訊錄成員學(xué)號(hào)、姓名、電話(huà)號(hào)碼、指向該結(jié)構(gòu)體的指針。此外,本系統(tǒng)還設(shè)置一個(gè)全局變量seat,表示成員序號(hào)。3、 系統(tǒng)功能設(shè)計(jì)本系統(tǒng)設(shè)置5個(gè)子功能:(1) 建立通訊錄系統(tǒng):可以一次輸入多個(gè)成員的信息,建立通訊錄。(2) 插入通訊錄記錄:每次可以插入一個(gè)成員的信息。(3) 查詢(xún)通訊錄記錄:可以按兩種方式查詢(xún)所要的記錄,一是按學(xué)號(hào)查詢(xún),二是按姓名查詢(xún)。(4) 刪除通訊錄記錄:可以按三種

23、方式刪除信息,按序號(hào)刪除,按學(xué)號(hào)刪除,按姓名刪除。(5) 顯示通訊錄記錄:可以查看通訊錄中所有成員信息。三、 模塊設(shè)計(jì)1、 模塊設(shè)計(jì)本程序包含兩個(gè)模塊:主程序模塊和鏈表操作模塊,其調(diào)用關(guān)系如下:主程序模塊鏈表操作模塊2、 系統(tǒng)子程序及功能設(shè)計(jì)本系統(tǒng)共設(shè)置10個(gè)子程序,各程序的函數(shù)名及功能說(shuō)明如下:(1)LinkList CreateIncreLink() /鏈表的創(chuàng)建(2)deleteElem(LinkList L, int i) /從通訊錄中按序號(hào)刪除第i各元素(3)delName(LinkList L,char n ) /按姓名刪除通訊者紀(jì)錄(4)delNum(LinkList L, int n) /按學(xué)號(hào)刪除通訊者紀(jì)錄(5)void insertYouXu(LinkList L, LinkList Elem) /插入一條通訊錄(6)printList(LinkList L) /打印通訊錄(7)prior(LinkList L, LinkLis

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論