2-4-單鏈表鏈式存儲結構-線性表-第2章-《數據結構》課本源碼-嚴蔚敏吳偉民版


課本源碼部分

第2章  線性表 - 單鏈表鏈式存儲

——《數據結構》-嚴蔚敏.吳偉民版

       ★有疑問先閱讀★

  源碼使用說明  鏈接☛☛☛ 《數據結構-C語言版》(嚴蔚敏,吳偉民版)課本源碼+習題集解析使用說明

  課本源碼合輯  鏈接☛☛☛ 《數據結構》課本源碼合輯

      習題集全解析  鏈接☛☛☛ 《數據結構題集》習題解析合輯

 

       本源碼引入的文件  鏈接☛ Status.hScanf.c

 

      文檔中源碼及測試數據存放目錄:數據結構\▲課本算法實現\▲02 線性表\04 SinglyLinkedList

 

概述

        比起之前順序存儲的單鏈表,鏈式存儲有很多優點,比如刪除與插入更方便,不用來回移動大量元素。但與此對應的是存取指定位置元素時將變得費勁,因為順序存儲結構中,通過數組下標就可以獲取第i個元素,但是在鏈式存儲中,必須由頭指針或尾指針(如果有的話)開始遍歷整個鏈表直至尋找到需要的元素。在元素的查找效率方面,此兩種存儲結構無明顯差異。

解析

       單鏈表鏈式存儲結構引入了鏈表的概念,鏈表由一個個小的結點組成,每個結點都包含一個數據域和指針域,指針域指向的是緊鄰的下一個結點,最后一個結點指針通常為NULL。如果將最后一個結點的指針指向開頭,那么這個鏈表就成了循環單鏈表。

       值得注意的是,這兒所示的鏈表都是有頭結點的單鏈表。有頭結點意味着頭結點指針指向的結點數據域為空,頭結點的存在僅僅是作為標記單鏈表的開始,有頭結點的單鏈表在操作時更加方便,不用專門為頭結點的增刪情況寫額外代碼,這一點可以在實際應用中加以體會。

       單鏈表鏈式結構如下圖:

可能涉及到的語法難點

       單鏈表鏈式存儲也用到了動態分配內存。值得注意的是,由於頭結點的指針本身就是個結構指針,所以在初始化、創建、銷毀等需要改變頭結點指針的地方,則要注意函數形參為二級指針,即指向頭指針的指針。新手很容易犯的錯誤是該用二級指針的地方使用了一級指針,這樣做的后果就是明明函數內分配了所需內存,但是外面卻訪問不到,也可能明明函數內銷毀掉的內存,外面還可以訪問到。這樣不僅會引起內存訪問差錯,甚至會引起程序崩潰,所以,這一點很值得引起重視。

源碼

       文件一 ☛  SinglyLinkedList.h 

       文件二 ☛  SinglyLinkedList.c 

       文件三 ☛  SinglyLinkedList-main.c (測試文檔)

       文件四 ☛  TestData_HL.txt (頭插法數據文檔)

       文件五 ☛  TestData_TL.txt  (尾插法數據文檔)

測試結果展示

 

       更多章節持續更新中...微笑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM