C語言程序設(shè)計課件第章_第1頁
C語言程序設(shè)計課件第章_第2頁
C語言程序設(shè)計課件第章_第3頁
C語言程序設(shè)計課件第章_第4頁
C語言程序設(shè)計課件第章_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2022-3-231C語言程序設(shè)計 2022-3-232第十二章 高級程序設(shè)計主講主講: : 計算機學(xué)院計算機學(xué)院 朱立華朱立華n本章介紹單鏈表的相關(guān)知識以及一個管理系統(tǒng)的模塊化本章介紹單鏈表的相關(guān)知識以及一個管理系統(tǒng)的模塊化設(shè)計方法設(shè)計方法, , 綜合運用所學(xué)知識實現(xiàn)一個完整的系統(tǒng)綜合運用所學(xué)知識實現(xiàn)一個完整的系統(tǒng)n關(guān)于單鏈表掌握以下知識:關(guān)于單鏈表掌握以下知識:為什么需要單鏈表為什么需要單鏈表如何通過指針和結(jié)構(gòu)體的定義實現(xiàn)單鏈表結(jié)構(gòu)如何通過指針和結(jié)構(gòu)體的定義實現(xiàn)單鏈表結(jié)構(gòu)單鏈表常用操作的實現(xiàn)方法單鏈表常用操作的實現(xiàn)方法:建立、遍歷、插入、刪除、查找、建立、遍歷、插入、刪除、查找、逆置逆置其

2、他類型的鏈表結(jié)構(gòu)簡介其他類型的鏈表結(jié)構(gòu)簡介n學(xué)生檔案成績管理系統(tǒng)的設(shè)計與實現(xiàn):學(xué)生檔案成績管理系統(tǒng)的設(shè)計與實現(xiàn):如何劃分模塊,每一個模塊的具體功能是什么如何劃分模塊,每一個模塊的具體功能是什么數(shù)據(jù)類型的定義數(shù)據(jù)類型的定義用文件實現(xiàn)數(shù)據(jù)的永久存儲用文件實現(xiàn)數(shù)據(jù)的永久存儲系統(tǒng)的完整實現(xiàn)系統(tǒng)的完整實現(xiàn)n為什么需要鏈表結(jié)構(gòu)?為什么需要鏈表結(jié)構(gòu)?一批類型相同的數(shù)據(jù)用數(shù)組存儲所存在的問題:一批類型相同的數(shù)據(jù)用數(shù)組存儲所存在的問題:(1)(1)定義靜態(tài)數(shù)組時必須指定數(shù)組的元素個數(shù),此后無法更定義靜態(tài)數(shù)組時必須指定數(shù)組的元素個數(shù),此后無法更改數(shù)組大小,可能造成空間浪費或不足改數(shù)組大小,可能造成空間浪費或不足(

3、2)(2)用指針可以申請動態(tài)數(shù)組,空間不會浪費或不足,但仍用指針可以申請動態(tài)數(shù)組,空間不會浪費或不足,但仍然是需要連續(xù)的存儲空間然是需要連續(xù)的存儲空間(3)(3)在數(shù)組中插入或刪除元素時需要大量移動元素,效率低在數(shù)組中插入或刪除元素時需要大量移動元素,效率低n什么是鏈表結(jié)構(gòu)什么是鏈表結(jié)構(gòu)?與數(shù)組不同,數(shù)組元素邏輯上相鄰物理地址上也相鄰,而鏈與數(shù)組不同,數(shù)組元素邏輯上相鄰物理地址上也相鄰,而鏈表結(jié)構(gòu)其數(shù)據(jù)元素作為一個個表結(jié)構(gòu)其數(shù)據(jù)元素作為一個個結(jié)點結(jié)點的的數(shù)據(jù)域數(shù)據(jù)域,結(jié)點中另有,結(jié)點中另有指指針域針域存儲邏輯上相鄰的其他元素的起始地址,存儲邏輯上相鄰的其他元素的起始地址,單鏈表單鏈表較常用較常

4、用數(shù)據(jù)域數(shù)據(jù)域指針域指針域單鏈表的單鏈表的一個結(jié)點一個結(jié)點n一個單鏈表一個單鏈表示例:示例:n n鏈表結(jié)構(gòu)的優(yōu)點是:鏈表結(jié)構(gòu)的優(yōu)點是:系統(tǒng)不必為應(yīng)用程序分配一組連續(xù)的空間,可以充分利用系系統(tǒng)不必為應(yīng)用程序分配一組連續(xù)的空間,可以充分利用系統(tǒng)的零散空間;有一個元素就生成一個結(jié)點,空間不浪費統(tǒng)的零散空間;有一個元素就生成一個結(jié)點,空間不浪費如果內(nèi)存空間足夠大,理論上這一批數(shù)據(jù)的容量不受限制如果內(nèi)存空間足夠大,理論上這一批數(shù)據(jù)的容量不受限制對于插入、刪除等操作不必通過移動元素實現(xiàn),效率高對于插入、刪除等操作不必通過移動元素實現(xiàn),效率高n單鏈表的結(jié)點定義單鏈表的結(jié)點定義-用結(jié)構(gòu)體和指針遞歸定義而成用結(jié)

5、構(gòu)體和指針遞歸定義而成1 12 23 34 40 0這是最重要這是最重要的頭指針的頭指針最后一個結(jié)點的指最后一個結(jié)點的指針域值為針域值為0(NULL)0(NULL)n單鏈表結(jié)點定義的格式:單鏈表結(jié)點定義的格式:ntypedef typedef intint Type; Type;nstruct Node struct Node n nType data; Type data; nstruct Node struct Node * *next;next;n; ; n特別提醒特別提醒:nextnext前的前的* *號不能丟失,否則就成為死循環(huán)定義啦號不能丟失,否則就成為死循環(huán)定義啦! !n(一)單

6、鏈表的建立:(一)單鏈表的建立:常用的有常用的有3 3種建立方法:種建立方法:后插法:后插法:新結(jié)點插入在鏈表的最尾部,作為新的尾結(jié)點新結(jié)點插入在鏈表的最尾部,作為新的尾結(jié)點前插法:前插法:新結(jié)點插入在鏈表的最前部,作為新的第一個結(jié)點新結(jié)點插入在鏈表的最前部,作為新的第一個結(jié)點按序插入法:按序插入法:新結(jié)點插入在鏈表的特定部位保持元素值有序新結(jié)點插入在鏈表的特定部位保持元素值有序結(jié)點的結(jié)構(gòu)體類型定義結(jié)點的結(jié)構(gòu)體類型定義單鏈表結(jié)點的數(shù)據(jù)成員類型不同只需要將單鏈表結(jié)點的數(shù)據(jù)成員類型不同只需要將intint替換成數(shù)替換成數(shù)據(jù)成員實際的類型,下面結(jié)點的類型定義不變據(jù)成員實際的類型,下面結(jié)點的類型定義不

7、變結(jié)點的指針成員名結(jié)點的指針成員名nextnext,類,類型為型為struct Nodestruct Node* *結(jié)點的數(shù)據(jù)成員名結(jié)點的數(shù)據(jù)成員名datadata,類型為類型為TypeType 用用TypeType作為類型別名,使結(jié)點類作為類型別名,使結(jié)點類型的定義具有更好的通用性型的定義具有更好的通用性n無論是哪一種建立方法無論是哪一種建立方法, ,共同的操作是共同的操作是: :最主要的是指向第一個結(jié)點的最主要的是指向第一個結(jié)點的頭指針頭指針,有時需要設(shè)一個指向有時需要設(shè)一個指向最后一個結(jié)點的最后一個結(jié)點的尾指針尾指針以方便操作以方便操作,注意頭指針該如何修改注意頭指針該如何修改逐個逐個申

8、請結(jié)點空間申請結(jié)點空間對每個結(jié)點的對每個結(jié)點的數(shù)據(jù)域賦值數(shù)據(jù)域賦值每個結(jié)點的每個結(jié)點的指針域指針域如何如何賦值賦值取決于建立方法取決于建立方法將新結(jié)點加入到鏈表中將新結(jié)點加入到鏈表中,即修改鏈表中某一個結(jié)點的指針域即修改鏈表中某一個結(jié)點的指針域n方法方法1:后插法的關(guān)鍵是后插法的關(guān)鍵是:新結(jié)點的指針域值一定為空新結(jié)點的指針域值一定為空,因為它是新的最后一個結(jié)點因為它是新的最后一個結(jié)點頭指針只要修改一次頭指針只要修改一次,即在空鏈狀態(tài)下插入第一個點時修改即在空鏈狀態(tài)下插入第一個點時修改保證保證tail指針始終指在當(dāng)前鏈表的最后一個結(jié)點處指針始終指在當(dāng)前鏈表的最后一個結(jié)點處,即新結(jié)點即新結(jié)點p插入

9、鏈表之后插入鏈表之后,要做賦值要做賦值: tail=p; 以后通過以后通過tail-next=p;就就可以實現(xiàn)在尾部插入新結(jié)點可以實現(xiàn)在尾部插入新結(jié)點動動態(tài)態(tài)演示演示過過程程n方法方法2:2:前插法的關(guān)鍵是前插法的關(guān)鍵是: : 新結(jié)點的指針域值一定賦值為新結(jié)點的指針域值一定賦值為head,head,成為新的第一個結(jié)點成為新的第一個結(jié)點 頭指針每插入一個新結(jié)點就要修改一次頭指針每插入一個新結(jié)點就要修改一次, ,保證永遠指向新的保證永遠指向新的第一個結(jié)點處第一個結(jié)點處 這種插入方法這種插入方法無需定義無需定義tailtail指向最后一個結(jié)點指向最后一個結(jié)點, ,代碼最簡潔代碼最簡潔n方法方法3:3

10、:按序插入法的關(guān)鍵是按序插入法的關(guān)鍵是: : 首先要通過搜索找到新結(jié)點的插入位置首先要通過搜索找到新結(jié)點的插入位置, ,這在后面有序插入這在后面有序插入算法中介紹算法中介紹 假設(shè)找到的插入位置是在假設(shè)找到的插入位置是在p1p1指針?biāo)傅慕Y(jié)點后指針?biāo)傅慕Y(jié)點后, ,在在p2p2指針?biāo)羔標(biāo)傅慕Y(jié)點前插入指的結(jié)點前插入 則關(guān)鍵的語句為則關(guān)鍵的語句為: :p1-next=p;p1-next=p; 和和 p-next=p2;p-next=p2; 動動態(tài)態(tài)演示演示過過程程動動態(tài)態(tài)演示演示過過程程n單鏈表的遍歷:單鏈表的遍歷:從頭指針開始,順著各個指針,依次訪從頭指針開始,順著各個指針,依次訪問鏈表中的各

11、個結(jié)點問鏈表中的各個結(jié)點 關(guān)鍵關(guān)鍵是確定遍歷的條件是確定遍歷的條件, ,即何時循環(huán)即何時循環(huán), ,何時終止何時終止根據(jù)單鏈表的根據(jù)單鏈表的最后一個指針域為空最后一個指針域為空, ,可以讓一個工作指針指向可以讓一個工作指針指向當(dāng)前結(jié)點當(dāng)前結(jié)點, ,不斷后移不斷后移, ,如果該指針為空如果該指針為空, ,則鏈表遍歷結(jié)束則鏈表遍歷結(jié)束關(guān)鍵代碼關(guān)鍵代碼: :for(p = head; p; p = p-next) printNode(p-data); n單鏈表的查找:單鏈表的查找:在單鏈表中搜索是否存在這樣的結(jié)點,在單鏈表中搜索是否存在這樣的結(jié)點,其數(shù)據(jù)域或數(shù)據(jù)域的某一項等于給定待搜索的值。其數(shù)據(jù)域或

12、數(shù)據(jù)域的某一項等于給定待搜索的值。 查找返回查找返回: :若存在則返回指向該結(jié)點的若存在則返回指向該結(jié)點的指針指針, ,否則返回否則返回空指針空指針關(guān)鍵代碼關(guān)鍵代碼:while(p&!equal(p-data,data,1) p=p-next; 該函數(shù)是根據(jù)結(jié)點該函數(shù)是根據(jù)結(jié)點的數(shù)據(jù)域類型定義的數(shù)據(jù)域類型定義的一個輸出函數(shù)的一個輸出函數(shù)動動態(tài)態(tài)演示演示過過程程動動態(tài)態(tài)演示演示過過程程該函數(shù)是根據(jù)結(jié)點的數(shù)據(jù)該函數(shù)是根據(jù)結(jié)點的數(shù)據(jù)域類型定義的一個判斷元域類型定義的一個判斷元素值是否相等的函數(shù)素值是否相等的函數(shù)n單鏈表的插入單鏈表的插入: :向一個單鏈表中插入以給定值為數(shù)據(jù)域向一個單鏈表中插

13、入以給定值為數(shù)據(jù)域信息的結(jié)點。信息的結(jié)點。n常見的插入方法有常見的插入方法有兩種兩種: 直接在鏈表尾部插入直接在鏈表尾部插入 依照數(shù)據(jù)域的值有序(非遞減有序或非遞增有序)插入依照數(shù)據(jù)域的值有序(非遞減有序或非遞增有序)插入 無論哪一種方法的插入,都需要通過指針申請一個新結(jié)點空無論哪一種方法的插入,都需要通過指針申請一個新結(jié)點空間間, ,然后將該結(jié)點通過修改特定結(jié)點的指針域插入鏈表中然后將該結(jié)點通過修改特定結(jié)點的指針域插入鏈表中 n單鏈表的刪除單鏈表的刪除: :從單鏈表中刪除指定值的結(jié)點從單鏈表中刪除指定值的結(jié)點 首先要用遍歷的思想查找該值的結(jié)點是否在單鏈表存在首先要用遍歷的思想查找該值的結(jié)點是

14、否在單鏈表存在 一定要有一個指向待刪除結(jié)點一定要有一個指向待刪除結(jié)點前趨結(jié)點位置的指針前趨結(jié)點位置的指針以便刪除以便刪除尾尾插插演示演示過過程程序序插插演示演示過過程程刪刪除除演示演示過過程程n單鏈表的逆置單鏈表的逆置: :將原單鏈表中各結(jié)點的指向關(guān)系置反將原單鏈表中各結(jié)點的指向關(guān)系置反原來的前趨變后繼原來的前趨變后繼原來的第一個結(jié)點變成最后一個結(jié)點原來的第一個結(jié)點變成最后一個結(jié)點原來的最后一個結(jié)點變成第一個結(jié)點原來的最后一個結(jié)點變成第一個結(jié)點并且所有相鄰結(jié)點的指向關(guān)系都要置反并且所有相鄰結(jié)點的指向關(guān)系都要置反 n單鏈表的完整操作單鏈表的完整操作: :完整程序由完整程序由4 4個文件組成:個文

15、件組成:(1)node.h(1)node.h: :定義鏈表結(jié)點的類型定義鏈表結(jié)點的類型,Type,Type代表結(jié)點的數(shù)據(jù)域類型代表結(jié)點的數(shù)據(jù)域類型(2)prepare.h(2)prepare.h: :定義結(jié)點的數(shù)據(jù)成員類型中需要的一些基本操定義結(jié)點的數(shù)據(jù)成員類型中需要的一些基本操作作, ,從而保證無論從而保證無論TypeType代表何種類型代表何種類型, ,鏈表的基本操作不變鏈表的基本操作不變(3)list.h:(3)list.h:定義了單鏈表的各種操作定義了單鏈表的各種操作, ,包括用包括用3 3種方法建立鏈種方法建立鏈表、插入、刪除、查找、遍歷、逆置等基本操作表、插入、刪除、查找、遍歷、逆

16、置等基本操作(4)li12_1.c(4)li12_1.c:測試單鏈表各種應(yīng)用的完整程序,包含了以上:測試單鏈表各種應(yīng)用的完整程序,包含了以上3 3個文件,其中定義了菜單函數(shù),運行函數(shù)和主函數(shù)個文件,其中定義了菜單函數(shù),運行函數(shù)和主函數(shù)逆逆置置演示演示過過程程請在請在VC+VC+下運行完下運行完整程序進行演示整程序進行演示n(1 1)單循環(huán)鏈表)單循環(huán)鏈表: :為什么要循環(huán)為什么要循環(huán):單鏈表如果丟失了頭指針則無法訪問鏈表:單鏈表如果丟失了頭指針則無法訪問鏈表改進方法改進方法:將單鏈表最后一個結(jié)點的指針域由空指針改為指:將單鏈表最后一個結(jié)點的指針域由空指針改為指向鏈表的第一個結(jié)點形成一個循環(huán)鏈向

17、鏈表的第一個結(jié)點形成一個循環(huán)鏈好處好處:從任意一個結(jié)點位置開始均可以遍歷整個單鏈表:從任意一個結(jié)點位置開始均可以遍歷整個單鏈表變化:變化:用遍歷思想進行訪問時鏈表結(jié)束的終止條件不是用遍歷思想進行訪問時鏈表結(jié)束的終止條件不是p=NULLp=NULL而是而是p p在向后移動過一次以后,再一次滿足在向后移動過一次以后,再一次滿足p=headp=head。n(2 2)帶表頭結(jié)點的單鏈表)帶表頭結(jié)點的單鏈表: :為什么要帶表頭為什么要帶表頭:單鏈表中插入或刪除一個結(jié)點時一定要考:單鏈表中插入或刪除一個結(jié)點時一定要考慮是否需要修改頭指針慮是否需要修改頭指針, ,操作不方便操作不方便改進方法改進方法:在單鏈

18、表真正的第一個結(jié)點前面增加一個附加結(jié):在單鏈表真正的第一個結(jié)點前面增加一個附加結(jié)點點, ,其其數(shù)據(jù)域通常不放什么有用信息,該結(jié)點稱為數(shù)據(jù)域通常不放什么有用信息,該結(jié)點稱為表頭結(jié)點表頭結(jié)點好處好處:插入或刪除時無需考慮修改頭指針的問題:插入或刪除時無需考慮修改頭指針的問題變化:變化:用遍歷思想訪問時終止條件不變但多用遍歷思想訪問時終止條件不變但多1 1次指針的移動次指針的移動n(3 3)帶表頭結(jié)點的單循環(huán)鏈表)帶表頭結(jié)點的單循環(huán)鏈表: :改進方法改進方法:將前兩種結(jié)合起來,既帶表頭結(jié)點又將最后一個:將前兩種結(jié)合起來,既帶表頭結(jié)點又將最后一個結(jié)點的指針域指向頭結(jié)點處結(jié)點的指針域指向頭結(jié)點處好處好處

19、:既解決了丟失頭指針無法訪問整個鏈表的問題,又解:既解決了丟失頭指針無法訪問整個鏈表的問題,又解決了插入、刪除操作時的便利性問題。決了插入、刪除操作時的便利性問題。變化:變化:在編程時,進行插入和刪除操作時無需考慮是否在第在編程時,進行插入和刪除操作時無需考慮是否在第一個元素結(jié)點前面插入,同時遍歷鏈表結(jié)束的條件不是一個元素結(jié)點前面插入,同時遍歷鏈表結(jié)束的條件不是p=NULLp=NULL,而是,而是p p在向后移動過一次以后,再一次滿足在向后移動過一次以后,再一次滿足p=headp=headn引申:雙鏈表引申:雙鏈表(選講)(選講)區(qū)別:區(qū)別:如果一個鏈表中各個結(jié)點的指針域有兩個,分別指向如果一

20、個鏈表中各個結(jié)點的指針域有兩個,分別指向其直接前趨和直接后繼,就成為雙向鏈表其直接前趨和直接后繼,就成為雙向鏈表, ,第一個結(jié)點指向前第一個結(jié)點指向前趨的指針和最后一個結(jié)點指向后繼的指針均為空指針趨的指針和最后一個結(jié)點指向后繼的指針均為空指針變化:變化:在插入和刪除時需要修改的指針數(shù)量比單鏈表要加倍在插入和刪除時需要修改的指針數(shù)量比單鏈表要加倍類比類比: :雙鏈表也可以有雙鏈表也可以有帶表頭的、循環(huán)的、帶表頭的循環(huán)帶表頭的、循環(huán)的、帶表頭的循環(huán)n功能:功能:讀入學(xué)生信息、以數(shù)據(jù)文件的形式存儲學(xué)生信息;可以增加、讀入學(xué)生信息、以數(shù)據(jù)文件的形式存儲學(xué)生信息;可以增加、修改、刪除學(xué)生的信息;按學(xué)號、

21、姓名、名次查詢學(xué)生信息;修改、刪除學(xué)生的信息;按學(xué)號、姓名、名次查詢學(xué)生信息;可以依學(xué)號順序瀏覽學(xué)生信息;可以統(tǒng)計每門課的最高分、可以依學(xué)號順序瀏覽學(xué)生信息;可以統(tǒng)計每門課的最高分、最低分以及平均分;計算每個學(xué)生的總分并排名。最低分以及平均分;計算每個學(xué)生的總分并排名。n用結(jié)構(gòu)化程序設(shè)計的思想,將系統(tǒng)分成用結(jié)構(gòu)化程序設(shè)計的思想,將系統(tǒng)分成5 5大功能模塊大功能模塊: : 顯示基本信息顯示基本信息基本信息管理基本信息管理: : 插入、刪除、修改學(xué)生記錄插入、刪除、修改學(xué)生記錄3 3個子模塊個子模塊 學(xué)生成績管理學(xué)生成績管理:計算學(xué)生總分:計算學(xué)生總分、根據(jù)總分排名兩個子模塊根據(jù)總分排名兩個子模塊

22、 考試成績統(tǒng)計考試成績統(tǒng)計:求課程最高分、最低分、平均分:求課程最高分、最低分、平均分3 3個子模塊個子模塊 根據(jù)條件查詢根據(jù)條件查詢:根據(jù)學(xué)號、姓名、名次查詢:根據(jù)學(xué)號、姓名、名次查詢3 3個子模塊個子模塊 n為實現(xiàn)該系統(tǒng),需要解決以下問題:為實現(xiàn)該系統(tǒng),需要解決以下問題: 數(shù)據(jù)的表示,用什么樣的數(shù)據(jù)類型能正確、合理、全面地數(shù)據(jù)的表示,用什么樣的數(shù)據(jù)類型能正確、合理、全面地表示學(xué)生的信息,每個學(xué)生必須要有哪些信息。表示學(xué)生的信息,每個學(xué)生必須要有哪些信息。 數(shù)據(jù)的存儲,用什么樣的結(jié)構(gòu)存儲學(xué)生的信息,有利于可數(shù)據(jù)的存儲,用什么樣的結(jié)構(gòu)存儲學(xué)生的信息,有利于可擴充性并方便操作。擴充性并方便操作。

23、 數(shù)據(jù)的永久保存問題,數(shù)據(jù)以怎樣的形式保存在磁盤上,數(shù)據(jù)的永久保存問題,數(shù)據(jù)以怎樣的形式保存在磁盤上,避免數(shù)據(jù)的重復(fù)錄入。避免數(shù)據(jù)的重復(fù)錄入。 如何能做到便于操作,即人機接口的界面友好,方便使用如何能做到便于操作,即人機接口的界面友好,方便使用者的操作。者的操作。n數(shù)據(jù)類型的定義數(shù)據(jù)類型的定義: : 用結(jié)構(gòu)類型表示每個學(xué)生的信息用結(jié)構(gòu)類型表示每個學(xué)生的信息 struct Student long num;char name20;char sex10;int score3;int total;int rank; ; typedef struct Student Type;n存儲結(jié)構(gòu)的選擇存儲結(jié)構(gòu)

24、的選擇:一維數(shù)組還是單鏈表?:一維數(shù)組還是單鏈表? 無論從內(nèi)存空間的使用效率上,還是操作的便捷程度上,單無論從內(nèi)存空間的使用效率上,還是操作的便捷程度上,單鏈表結(jié)構(gòu)要優(yōu)于數(shù)組結(jié)構(gòu),以鏈表結(jié)構(gòu)要優(yōu)于數(shù)組結(jié)構(gòu),以TypeType為結(jié)點的數(shù)據(jù)域類型為結(jié)點的數(shù)據(jù)域類型 n為直接使用為直接使用list.h中定義的各種單鏈表操作的函數(shù),需中定義的各種單鏈表操作的函數(shù),需要對要對node.h和和prepare.h兩個文件中的內(nèi)容作兩個文件中的內(nèi)容作相應(yīng)改造相應(yīng)改造n文件的選擇:文件的選擇:用二進制文件存儲學(xué)生的信息用二進制文件存儲學(xué)生的信息 在在file.h中定義中定義3個主要的函數(shù):個主要的函數(shù): voi

25、d createFile( ):建立初始的數(shù)據(jù)文件建立初始的數(shù)據(jù)文件 struct node * readFile(struct node *head):將文件中的內(nèi)將文件中的內(nèi)容讀出置于單鏈表中容讀出置于單鏈表中 void saveFile(struct node *head):將鏈表中各結(jié)點的值依將鏈表中各結(jié)點的值依次寫入文件次寫入文件n完整的程序用兩級菜單四層多個函數(shù)完整的程序用兩級菜單四層多個函數(shù)5 5個文件實現(xiàn):個文件實現(xiàn): 修改后的修改后的node.hnode.h(見節(jié))(見節(jié)) 修改后的修改后的prepare.hprepare.h(見節(jié))(見節(jié)) file.hfile.h(見節(jié))(見節(jié)) list.hlist.h(見節(jié)的第(見節(jié)的第3 3個文件,無需改動)個文件,無需改動) li12_2.cli12_2.c,系統(tǒng)實現(xiàn)的最主要文件,系統(tǒng)實現(xiàn)的最主要文件n在在VC+VC+下運行程序進行演示下運行程序進行演示n本章主要介紹了單鏈表的各種操作及一個管理系統(tǒng)本章主要介紹了單鏈表的各種操作及一個管理系統(tǒng)的實現(xiàn)。的實現(xiàn)。n關(guān)于單鏈表:關(guān)于單鏈表:(1 1)如何用指針和結(jié)構(gòu)體遞歸定義形成單鏈表,對單鏈)如何用指針和結(jié)構(gòu)體遞歸定義形成單鏈表,對單鏈表的各種操作:建立、遍歷、插入、刪除、查找、逆置等表的各種操作:建立、遍歷、插入、刪除、查找、逆置等方法進行了詳細(xì)介紹

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論