版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 安陽(yáng)師范學(xué)院 數(shù)據(jù)結(jié)構(gòu)課外實(shí)踐 數(shù)據(jù)結(jié)構(gòu)課外實(shí)踐報(bào)告 項(xiàng) 目 名 稱(chēng): 學(xué)生數(shù)據(jù)結(jié)構(gòu)成績(jī)管理系統(tǒng) 所 在 班 級(jí): 2012級(jí)軟件工程(java1)班 小 組 成 員:李士鵬 谷亞寧 李明浩 黃智 指 導(dǎo) 教 師:劉運(yùn)通 起 止 時(shí) 間:第17周 項(xiàng)目基本信息項(xiàng)目名稱(chēng)學(xué)生數(shù)據(jù)結(jié)構(gòu)成績(jī)管理系統(tǒng)項(xiàng)目簡(jiǎn)介(1)學(xué)生信息及成績(jī)的錄入要求包括的學(xué)生信息有:學(xué)號(hào)、姓名、性別、出生日期、數(shù)據(jù)結(jié)構(gòu)、線性代數(shù)、概率統(tǒng)計(jì)成績(jī)(至少錄入10名以上學(xué)生)所錄入的學(xué)生按學(xué)號(hào)散列存儲(chǔ)(散列函數(shù)為:學(xué)號(hào)%5 取整,如 1002%5 =2),采用拉鏈法解決沖突。 (2)學(xué)生成績(jī)的查詢要求根據(jù)提供的學(xué)號(hào)完成學(xué)生成績(jī)的查詢(必
2、須采用哈希查找) (3)學(xué)生成績(jī)的分段統(tǒng)計(jì)和排序輸出統(tǒng)計(jì)出各分?jǐn)?shù)段學(xué)生人數(shù)(60分以下,6070,7180,.)小組成員李士鵬 谷亞寧 李明浩 黃智任務(wù)分工李士鵬:數(shù)據(jù)錄入和查詢谷亞寧:數(shù)據(jù)的統(tǒng)計(jì)和排序李明浩:界面規(guī)劃和整理黃智 :函數(shù)調(diào)用的調(diào)試課外實(shí)踐評(píng)定成績(jī)記錄指導(dǎo)教師意見(jiàn)系統(tǒng)完成情況:優(yōu) 良 中 差報(bào)告完成情況:優(yōu) 良 中 差答辯評(píng)定成績(jī)團(tuán)隊(duì)整體成績(jī):成員成績(jī)李士鵬谷亞寧李明浩黃智綜 合 成 績(jī)一.實(shí)驗(yàn)?zāi)康?通過(guò)學(xué)習(xí),了解并初步掌握設(shè)計(jì)、實(shí)現(xiàn)較大系統(tǒng)的完整過(guò)程,包括系統(tǒng)分析、編碼設(shè)計(jì)、編碼集成以及調(diào)試分析,熟練掌握數(shù)據(jù)結(jié)構(gòu)的選擇、設(shè)計(jì)、實(shí)現(xiàn)、以及操作方法,為進(jìn)一步的開(kāi)發(fā)應(yīng)用打好基礎(chǔ)。二.
3、問(wèn)題描述實(shí)現(xiàn)功能:學(xué)生相關(guān)信息的輸入、輸出、查找、讀入、顯示、保存、排序、退出。三.需求分析 該程序所做的工作是對(duì)學(xué)生的成績(jī)的管理,為師生進(jìn)行學(xué)生成績(jī)的記錄、查詢提供方便。此程序規(guī)定: 1.在成績(jī)錄入是,姓名為10個(gè)字母以內(nèi)的字符串;各科成績(jī)?yōu)檎危粚W(xué)號(hào)長(zhǎng)整型,性別和出生日期為字符型; 2.程序的輸出信息主要為:輸出學(xué)生的各科成績(jī)及排序統(tǒng)計(jì)學(xué)生相關(guān)成績(jī)數(shù)據(jù);3. 程序的功能主要包括:學(xué)生本人信息的錄入、修改、查找、學(xué)生本人及成績(jī)的輸出和統(tǒng)計(jì);首先運(yùn)行程序,包括4個(gè)選項(xiàng),0.保存并退出系統(tǒng). 1.按學(xué)號(hào)錄入學(xué)生信息 2.按學(xué)號(hào)查詢學(xué)生成績(jī) 3.分段統(tǒng)計(jì)與排序輸出。4.然后可以根據(jù)不同的需要選擇不
4、同的選項(xiàng)進(jìn)行操作四.概要設(shè)計(jì)4.1系統(tǒng)用到的數(shù)據(jù)有:int dataST;/數(shù)據(jù)結(jié)構(gòu)int gailv;/概率統(tǒng)計(jì)int xiandai;/線性代數(shù) long number; /學(xué)號(hào)char name10; /姓名 char sex10; /性別char date20; /出生日期 score s; /成績(jī)4.2用到的主要函數(shù):(1)int hash(int key); /用除留余數(shù)法構(gòu)造哈希函數(shù)(2)int Build_Hash(Hash *H,stu st);/輸入一組關(guān)鍵字,建立Hash表,用鏈地址法處理沖突(3)int Search(Hash *H,int key);/成績(jī)查詢(4)v
5、oid HeapAdjust (HeapType &H , int s, int m);/篩選(5)void HeapSort(HeapType &H);/ 堆排序。(6)void Segment(HeapType h);/統(tǒng)計(jì)各個(gè)分?jǐn)?shù)段的人數(shù)(7)int Sort(Hash *H);/使用堆排序?qū)Ω骺瞥煽?jī)按從高到低排列輸出(8)void create(Hash *H);/錄入學(xué)生信息(9)void Find(Hash *H);/查詢學(xué)生信息(10)void tongji(Hash *H);/分段統(tǒng)計(jì)及排序(11)void savedata(student *&p);(12)student *
6、getdata();(13)void main();/主函數(shù)內(nèi)部可以實(shí)現(xiàn)多函數(shù)調(diào)用4.3本實(shí)驗(yàn)從整體上分為四大模塊:(1)創(chuàng)建并錄入學(xué)生相關(guān)信息 ;(2)按學(xué)號(hào)查詢學(xué)生成績(jī)信息;(3)分段統(tǒng)計(jì)成績(jī)與排序輸出 ;(4)退出管理系統(tǒng) ;五重要函數(shù)原理解析1.哈希函數(shù)(1)定義:Hash,一般翻譯做散列,也有直接音譯為哈希的,就是把任意長(zhǎng)度的輸入(又叫做預(yù)映射, pre-image),通過(guò)散列算法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,而不可能從散列值來(lái)唯一的確定輸入值。簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的
7、消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù)。(2)本次實(shí)驗(yàn)中的所用到的哈希表概念及其作用哈希表中元素是由哈希函數(shù)確定的。將數(shù)據(jù)元素的關(guān)鍵字K作為自變量,通過(guò)一定的函數(shù)關(guān)系(稱(chēng)為哈希函數(shù)),計(jì)算出的值,即為該元素的存儲(chǔ)地址。表示為: Addr = H(key)為此在建立一個(gè)哈希表之前需要解決兩個(gè)主要問(wèn)題:構(gòu)造一個(gè)合適的哈希函數(shù)均勻性 H(key)的值均勻分布在哈希表中;簡(jiǎn)單以提高地址計(jì)算的速度沖突的處理沖突:在哈希表中,不同的關(guān)鍵字值對(duì)應(yīng)到同一個(gè)存儲(chǔ)位置的現(xiàn)象。即關(guān)鍵字K1K2,但H(K1)= H(K2)。均勻的哈希函數(shù)可以減少?zèng)_突,但不能避免沖突。發(fā)生沖突后,必須解決;也即必須尋找下一個(gè)可用地址。
8、解決沖突的方法:1鏈接法(拉鏈法);開(kāi)放定址法。以及哈希表的構(gòu)造方法直接定址法例如:有一個(gè)從1到100歲的人口數(shù)字統(tǒng)計(jì)表,其中,年齡作為關(guān)鍵字,哈希函數(shù)取關(guān)鍵字自身。數(shù)字分析法有學(xué)生的生日數(shù)據(jù)如下:年.月.日75.10.0375.11.2376.03.02經(jīng)分析,第一位,第二位,第三位重復(fù)的可能性大,取這三位造成沖突的機(jī)會(huì)增加,所以盡量不取前三位,取后三位比較好。平方取中法取關(guān)鍵字平方后的中間幾位為哈希地址。折疊法將關(guān)鍵字分割成位數(shù)相同的幾部分(最后一部分的位數(shù)可以不同),然后取這幾部分的疊加和(舍去進(jìn)位)作為哈希地址,這方法稱(chēng)為折疊法。例如:每一種西文圖書(shū)都有一個(gè)國(guó)際標(biāo)準(zhǔn)圖書(shū)編號(hào),它是一個(gè)1
9、0位的十進(jìn)制數(shù)字,若要以它作關(guān)鍵字建立一個(gè)哈希表,當(dāng)館藏書(shū)種類(lèi)不到10,000時(shí),可采用此法構(gòu)造一個(gè)四位數(shù)的哈希函數(shù)。*除留余數(shù)法取關(guān)鍵字被某個(gè)不大于哈希表表長(zhǎng)m的數(shù)p除后所得余數(shù)為哈希地址。H(key)=key MOD p (p=m)隨機(jī)數(shù)法選擇一個(gè)隨機(jī)函數(shù),取關(guān)鍵字的隨機(jī)函數(shù)值為它的哈希地址,即H(key)=random(key),其中random為隨機(jī)函數(shù)。通常用于關(guān)鍵字長(zhǎng)度不等時(shí)采用此法。*若已知哈希函數(shù)及沖突處理方法,哈希表的建立步驟如下:Step1.取出一個(gè)數(shù)據(jù)元素的關(guān)鍵字key,計(jì)算其在哈希表中的存儲(chǔ)地址D=H(key)。若存儲(chǔ)地址為D的存儲(chǔ)空間還沒(méi)有被占用,則將該數(shù)據(jù)元素存入;
10、否則發(fā)生沖突,執(zhí)行Step2。Step2.根據(jù)規(guī)定的沖突處理方法,計(jì)算關(guān)鍵字為key的數(shù)據(jù)元素之下一個(gè)存儲(chǔ)地址。若該存儲(chǔ)地址的存儲(chǔ)空間沒(méi)有被占用,則存入;否則繼續(xù)執(zhí)行Step2,直到找出一個(gè)存儲(chǔ)空間沒(méi)有被占用的存儲(chǔ)地址為止。*沖突無(wú)論哈希函數(shù)設(shè)計(jì)有多么精細(xì),都會(huì)產(chǎn)生沖突現(xiàn)象,也就是2個(gè)關(guān)鍵字處理函數(shù)的結(jié)果映射在了同一位置上,因此,有一些方法可以避免沖突。拉鏈法拉出一個(gè)動(dòng)態(tài)鏈表代替靜態(tài)順序存儲(chǔ)結(jié)構(gòu),可以避免哈希函數(shù)的沖突,不過(guò)缺點(diǎn)就是鏈表的設(shè)計(jì)過(guò)于麻煩,增加了編程復(fù)雜度。此法可以完全避免哈希函數(shù)的沖突。多哈希法設(shè)計(jì)二種甚至多種哈希函數(shù),可以避免沖突,但是沖突幾率還是有的,函數(shù)設(shè)計(jì)的越好或越多都可
11、以將幾率降到最低(除非人品太差,否則幾乎不可能沖突)。開(kāi)放地址法開(kāi)放地址法有一個(gè)公式:Hi=(H(key)+di) MOD m i=1,2,.,k(k=m-1)其中,m為哈希表的表長(zhǎng)。di 是產(chǎn)生沖突的時(shí)候的增量序列。如果di值可能為1,2,3,.m-1,稱(chēng)線性探測(cè)再散列。如果di取1,則每次沖突之后,向后移動(dòng)1個(gè)位置.如果di取值可能為1,-1,4,-4,9,-9,16,-16,.k*k,-k*k(knumber);if(Hi=NULL)Hi=st; /作為鏈表的第一個(gè)結(jié)點(diǎn) else for(p=Hi;p-next;p=p-next); if(p-number=st-number) prin
12、tf( 已存在該學(xué)號(hào)的學(xué)生,添加學(xué)生信息出錯(cuò)!n); return 0; p-next=st; /插入鏈表尾部. return 1;2.堆排序*1: 堆的定義:n個(gè)元素的序列k1,k2,kn當(dāng)且僅當(dāng)滿足下列關(guān)系時(shí),稱(chēng)之為堆。 ki = k2i ki = k2i+1堆實(shí)質(zhì)上是滿足如下性質(zhì)的完全二叉樹(shù):樹(shù)中任一非葉結(jié)點(diǎn)的關(guān)鍵字均不大于(或不小于)其左右孩子(若存在)結(jié)點(diǎn)的關(guān)鍵字。*2: 利用堆及其運(yùn)算,可以很容易地實(shí)現(xiàn)選擇排序的思想。堆排序只需要一個(gè)記錄大小的輔助空間,每個(gè)待排序的記錄僅占有一個(gè)存儲(chǔ)空間,彌補(bǔ)了錦標(biāo)賽排序的缺點(diǎn)。堆排序分為兩個(gè)步驟: 第一步,根據(jù)初始輸入數(shù)據(jù),利用堆的調(diào)整算法 形成
13、初始堆(最大堆或最小堆); 第二步,通過(guò)一系列的對(duì)象交換和重新調(diào)整堆進(jìn)行排序。對(duì)堆自堆頂至葉子的調(diào)整過(guò)程稱(chēng)為“篩選”。*3篩選(調(diào)整堆)算法: void HeapAdjust (SqList &H, int s, int m) / 已知H.rs.m中記錄的關(guān)鍵字除H.rs.key之外均滿足堆的定義, 本函數(shù)依據(jù)關(guān)鍵字的大小對(duì)H.rs進(jìn)行調(diào)整, 使H.rs.m成為一 個(gè)大頂堆(最大堆) H.r0 = H.rs; / 暫存根結(jié)點(diǎn)的記錄for ( j=2*s; j=m; j*=2 ) / 沿關(guān)鍵字較大的孩子結(jié)點(diǎn)向下篩選 if ( jm & H.rj.key= H.rj.key ) break; /
14、不需要調(diào)整,跳出循環(huán)H.rs = H.rj; s = j; / 將大關(guān)鍵字記錄往上調(diào) / forH.rs = H.r0; / 回移篩選下來(lái)的記錄 / HeapAdjust *4堆排序算法:void HeapSort ( SqList &H )/ 對(duì)順序表H進(jìn)行堆排序for ( i=H.length/2; i0; -i )/ 將 H.r1.H.length 建成大頂堆HeapAdjust ( H, i, H.length );for ( i=H.length; i1; -i ) H.r1 H.ri; / 互換“堆頂”和當(dāng)前的“堆底”,使已有序的記錄沉積在底部HeapAdjust(H, 1, i-
15、1); / 從堆頂記錄開(kāi)始調(diào)整,將 H.r1.i-1 重新調(diào)整為大頂堆 / for / HeapSort*堆排序的分析和解釋?zhuān)?)基于初始堆(最大堆)進(jìn)行堆排序:最大堆的第一個(gè)對(duì)象V0具有最大的關(guān)鍵字,先將V0與Vn對(duì)調(diào),把具有最大關(guān)鍵字的對(duì)象交換到最后。然后對(duì)前面的n-1個(gè)對(duì)象,使用堆的調(diào)整算法,重新建立最大堆。結(jié)果具有次最大關(guān)鍵字的對(duì)象又上浮到堆頂,即V0位置。對(duì)調(diào)V0和Vn-1,再調(diào)用調(diào)整算法,對(duì)前n-2個(gè)對(duì)象重新調(diào)整,。如此反復(fù)執(zhí)行,最后得到全部排好序的對(duì)象序列。(2)如何由一個(gè)無(wú)序序列“建堆”: 從一個(gè)無(wú)序序列建堆的過(guò)程就是一個(gè)反復(fù)“篩選”的過(guò)程。 建堆的過(guò)程是一個(gè)“從下到上”調(diào)整堆
16、的過(guò)程。顯然,葉子結(jié)點(diǎn)都是一個(gè)堆。對(duì)記錄無(wú)序系列中“最后一個(gè)”分支結(jié)點(diǎn)而言,肯定滿足篩選的前提,即除根結(jié)點(diǎn)之外,其左、右子樹(shù)都是堆,由此可調(diào)用篩選算法將它調(diào)整為一個(gè)堆。 類(lèi)似地,“從下往上”依次對(duì)其他結(jié)點(diǎn)進(jìn)行篩選,直至對(duì)以第1個(gè)記錄為根的“二叉樹(shù)”進(jìn)行篩選之后,整個(gè)記錄序列就是一個(gè)大頂堆了。 最后一個(gè)分支結(jié)點(diǎn)(即最后一個(gè)非葉子結(jié)點(diǎn))是第n/2個(gè)元素。 因此,篩選只需從第n/2個(gè)元素開(kāi)始,從后往前,直至完成根結(jié)點(diǎn)的篩選,堆就構(gòu)造成功了。(3)在for循環(huán)中,調(diào)用了n-1次調(diào)整算法,該循環(huán)的計(jì)算時(shí)間為O(log2n)。因此,堆排序的時(shí)間復(fù)雜性為O(nlog2n)。 該算法的附加存儲(chǔ)主要是在調(diào)整算法
17、中用來(lái)執(zhí)行對(duì)象交換時(shí)所用的一個(gè)臨時(shí)對(duì)象。因此,該算法的空間復(fù)雜性為O(1)。 堆排序是一種不穩(wěn)定的排序方法。六、詳細(xì)設(shè)計(jì)1、系統(tǒng)主函數(shù) main()設(shè)計(jì)開(kāi) 始直接顯示主界面是否建立新系統(tǒng)退出2、 主菜單模塊函數(shù) MenuOfMain() 設(shè)計(jì)開(kāi) 始顯示主菜單選擇擇統(tǒng)計(jì)分?jǐn)?shù)段查詢學(xué)生數(shù)據(jù)錄入學(xué)生信息退出菜單3、錄入學(xué)生信息功能模塊函數(shù) void create(Hash *H) 設(shè)計(jì) 七 測(cè)試分析7.1 測(cè)試結(jié)果1.輸入2.查詢學(xué)生數(shù)據(jù)3統(tǒng)計(jì)各個(gè)分?jǐn)?shù)段學(xué)生以及排序輸出問(wèn)題總結(jié):1.由于編寫(xiě)代碼的時(shí)候,中英文格式不同,造成編譯錯(cuò)誤。 2.括號(hào)不匹配,這個(gè)是出現(xiàn)次數(shù)多的,造成連帶錯(cuò)誤。 3.變量沒(méi)有經(jīng)
18、過(guò)定義就在程序中使用(這個(gè)錯(cuò)誤比較好查找)。 4.引用符號(hào)“&”沒(méi)有寫(xiě),造成程序編譯錯(cuò)誤。上述問(wèn)題有的通過(guò)插入斷點(diǎn)調(diào)試,有的是從頭到尾仔細(xì)檢查一遍,都很好的解決參考文獻(xiàn)1 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu). 北京:清華大學(xué)出版社,2012.2 譚浩強(qiáng). C程序設(shè)計(jì)(第四版)作者:清華大學(xué)出版社,2012心得體會(huì)通過(guò)學(xué)生數(shù)據(jù)結(jié)構(gòu)成績(jī)管理系統(tǒng)這個(gè)題目,我們對(duì)于編寫(xiě)程序有一個(gè)顯著的提高,熟練應(yīng)用結(jié)構(gòu)體,對(duì)于程序出現(xiàn)的錯(cuò)誤也有了很好的辨認(rèn)和解決,小組成員在一起更加的團(tuán)結(jié),更注重合作。在一起解救問(wèn)題的時(shí)候,經(jīng)過(guò)很多的爭(zhēng)辯也讓我們更加的默契。程序源代碼:#include #include #include #in
19、clude typedef struct /成績(jī)結(jié)構(gòu)定義int dataST;/數(shù)據(jù)結(jié)構(gòu)int gailv;/概率統(tǒng)計(jì)int xiandai;/線性代數(shù)score;typedef struct student /學(xué)生信息結(jié)構(gòu)定義long number; /學(xué)號(hào)char name10; /姓名 char sex10; /性別 char date20; /出生日期 score s; /成績(jī) struct student *next;student,*stu;typedef stu Hash;/定義哈希表的類(lèi)型typedef struct /堆結(jié)構(gòu)定義int r20;/記錄分?jǐn)?shù)int length;
20、/長(zhǎng)度HeapType;int hash(int key); /用除留余數(shù)法構(gòu)造哈希函數(shù)int Build_Hash(Hash *H,stu st);/輸入一組關(guān)鍵字,建立Hash表,用鏈地址法處理沖突int Search(Hash *H,int key);/成績(jī)查詢void HeapAdjust (HeapType &H , int s, int m);/篩選void HeapSort(HeapType &H);/ 堆排序。void Segment(HeapType h);/統(tǒng)計(jì)各個(gè)分?jǐn)?shù)段的人數(shù)int Sort(Hash *H);/使用堆排序?qū)Ω骺瞥煽?jī)按從高到低排列輸出void create
21、(Hash *H);/錄入學(xué)生信息void Find(Hash *H);/查詢學(xué)生信息void tongji(Hash *H);/分段統(tǒng)計(jì)及排序void savedata(student *&p);student *getdata();void main()int n,i;student *getdata();Hash H5;/哈希表 for(i=0;inumber);if(Hi=NULL)Hi=st; /作為鏈表的第一個(gè)結(jié)點(diǎn) else for(p=Hi;p-next;p=p-next); if(p-number=st-number) printf( 已存在該學(xué)號(hào)的學(xué)生,添加學(xué)生信息出錯(cuò)!n)
22、; return 0; p-next=st; /插入鏈表尾部. return 1;int Search(Hash *H,int key)/成績(jī)查詢int i;stu p;i=hash(key);if(Hi)if(Hi-number=key)/在表頭printf(學(xué)號(hào):%dn姓名:%sn,key,Hi-name);printf(性別:%sn出生日期:%s:%sn,Hi-sex,Hi-date);printf(n各科分?jǐn)?shù)如下:n);printf(數(shù)據(jù)結(jié)構(gòu):%dn概率統(tǒng)計(jì):%dn線性代數(shù):%dn,Hi-s.dataST,Hi-s.gailv,Hi-s.xiandai);return 1;else/探
23、測(cè)下一個(gè)地址,在鏈表中查找for(p=Hi-next;p;p=p-next)if(p-number=key)printf(學(xué)號(hào):%dn姓名:%sn,key,p-name);printf(性別:%sn出生日期:%sn,p-sex,p-date);printf(n各科分?jǐn)?shù)如下:n);printf(數(shù)據(jù)結(jié)構(gòu):%dn概率統(tǒng)計(jì):%dn線性代數(shù):%dn,p-s.dataST,p-s.gailv,p-s.xiandai);return 1;return 0;void HeapAdjust (HeapType &H , int low, int high)/堆排序 int rc;int j;rc=H.rlow
24、; /rc是low for(j=2*low;j=high;j*=2 )/j沿Key較大的孩子結(jié)點(diǎn)向下篩選 /rj是ri的左孩子if ( jhigh & H.rjH.rj+1) /如果右孩子較大,把j指向右孩子+j; / j為Key較大記錄的下標(biāo)if (!(rc0;i-) /循環(huán)建立初始堆HeapAdjust ( H, i, H.length );/ 建大頂堆for(i=H.length;i1;i-) t=H.r1; /將堆頂記錄和當(dāng)前未經(jīng)排序子序列H.r1.i中最后一個(gè)記錄相互交換 H.r1=H.ri; H.ri=t;HeapAdjust(H,1,i-1); /對(duì) H.r1.i-1重新調(diào)整為大
25、頂堆void Segment(HeapType h)/統(tǒng)計(jì)各個(gè)分?jǐn)?shù)段的人數(shù)int a,b,c,d,e;int i;a=b=c=d=e=0;for(i=1;i=90)a+;else if(h.ri=80)b+;else if(h.ri70)c+;else if(h.ri60)d+;elsee+;printf(n90分以上的有%d人n,a); printf(80-90分的有%d人n,b); printf(70-80分的有%d人n,c); printf(60-70分的有%d人n,d); printf(60分以下的有%d人n,e);int Sort(Hash *H)/使用堆排序?qū)Ω骺瞥煽?jī)按從高到低排列
26、輸出HeapType a,b,c;int i,j,k,m;stu st;j=k=m=1;a.length=b.length=c.length=0;/把哈希表中的數(shù)據(jù)放到堆結(jié)構(gòu)中for(i=0;is.dataST; b.rk=st-s.gailv; c.rm=st-s.xiandai;j+;k+; m+;a.length+; b.length+;c.length+;st=st-next;if(a.length1)/數(shù)據(jù)結(jié)構(gòu)成績(jī)HeapSort(a);printf(數(shù)據(jù)結(jié)構(gòu)成績(jī)從高到低排列為:);/按學(xué)號(hào)進(jìn)行每位學(xué)生成績(jī)由高到低排序for(i=a.length;i0;i-)printf(%3d,a
27、.ri);Segment(a); /概率統(tǒng)計(jì)成績(jī)if(b.length1)HeapSort(b);printf(n概率統(tǒng)計(jì)成績(jī)從高到低排列為:);for(i=b.length;i0;i-)printf(%3d,b.ri);Segment(b); /線性代數(shù)成績(jī)if(c.length1)HeapSort(c);printf(n線性代數(shù)成績(jī)從高到低排列為:);for(i=c.length;i0;i-)printf(%3d,c.ri);Segment(c); return 0;void create(Hash *H)/錄入學(xué)生信息 這個(gè)文件有問(wèn)題FILE *fp;fp=fopen(stu.txt,w
28、b);stu st;int m;int c;c=1;m=0;while(c) m+;st=(stu)malloc(sizeof(student); st-next=NULL; st-number=0; printf(n請(qǐng)輸入第%d名學(xué)生的學(xué)號(hào):,m); scanf(%d,&st-number);fprintf(fp,%d,st-number); printf(請(qǐng)輸入姓名:); scanf(%s,st-name); fprintf(fp,%s,st-name ); printf(請(qǐng)輸入性別:); scanf(%s,st-sex);fprintf(fp,%s,st-sex ); printf(請(qǐng)輸
29、入出生年月:); scanf(%s,st-date);fprintf(fp,%s,st-date ); st-s.dataST=0; printf(請(qǐng)輸入數(shù)據(jù)結(jié)構(gòu)成績(jī):); scanf(%d,&st-s.dataST);fprintf(fp,%d,st-s.dataST ); st-s.gailv=0; printf(請(qǐng)輸入概率統(tǒng)計(jì)成績(jī):); scanf(%d,&st-s.gailv);fprintf(fp,%d,st-s.gailv ); st-s.xiandai=0; printf(請(qǐng)輸入線性代數(shù)成績(jī):); scanf(%d,&st-s.xiandai);fprintf(fp,%d,st-s .xiandai ); Build_Hash(H,st); printf(n繼續(xù)?選(1/0):); scanf(%d,&c);fclose(fp);printf(n*此系統(tǒng)共有%d名學(xué)生!*n,m)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)紡織空調(diào)軸流風(fēng)機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)打印機(jī)油墨數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)六角金蔥片數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)Puma羅茨真空泵數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)晶體管恒電位儀市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)大型超市冷庫(kù)市場(chǎng)調(diào)查研究報(bào)告
- 2025年度摩托車(chē)零部件回收利用合同范本4篇
- 二零二五年度養(yǎng)老服務(wù)機(jī)構(gòu)用品采購(gòu)合同4篇
- 二零二五年度有機(jī)棉花生產(chǎn)與銷(xiāo)售合同4篇
- 2025版棉花產(chǎn)業(yè)大數(shù)據(jù)分析與應(yīng)用合同4篇
- 2025水利云播五大員考試題庫(kù)(含答案)
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專(zhuān)家共識(shí)(2024版)解讀
- 中藥飲片驗(yàn)收培訓(xùn)
- 手術(shù)室專(zhuān)科護(hù)士工作總結(jié)匯報(bào)
- DB34T 1831-2013 油菜收獲與秸稈粉碎機(jī)械化聯(lián)合作業(yè)技術(shù)規(guī)范
- 蘇州市2025屆高三期初陽(yáng)光調(diào)研(零模)政治試卷(含答案)
- 創(chuàng)傷處理理論知識(shí)考核試題及答案
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)(2022年版)》測(cè)試題+答案
- 殘疾軍人新退休政策
- 白酒代理合同范本
評(píng)論
0/150
提交評(píng)論