成人app

順序存儲和鏈式存儲

點擊打開在線編譯器,邊學邊練

1. 再談數組—順序存儲

成人app我們在開始計算機課程沒多久后就已經知曉了數組的概念,數組作為一個順序儲存方式數據結構為我們的程序設計帶來了大量的便利,幾乎任何的高級程序設計,算法設計都離不開數組的靈活使用,但是,數組最大的缺點就是我們的插入和刪除時需要移動大量的元素,顯然這需要消耗大量的時間。

以C語言數組插入一個元素為例,當我們需要在一個數組{1,2,3,4,5,6,7}的第1個元素后(即第2個元素)的位置插入一個’A’時

我們需要做的有,將第1個元素后的整體元素后移,形成新的數組{1,2,2,3,4,5,6,7},再將第2個元素位置的元素替換為我們所需要的元素’A’,最終形成我們的預期,一個簡單的插入操作要進行那么多的步驟,顯然不是很核算。


21.png

由示意圖的操作,我們可以看出這樣做的弊端有二

其一:所需要移動的元素很多,浪費算力。

成人app其二:必須為數組開足夠多的空間,否則有溢出風險。

 

2. 鏈表—鏈式存儲

C語言使用中,由于以上出現的這些問題,我們鏈表的概念就應運而生,鏈表通過不連續的儲存方式,以及指針的靈活使用,巧妙的簡化了上訴的內容,同時鏈表是自適應內存大小的,也就是說無論我們設多大的數據,理論上都可以實現(當然不能超過你的機器承載),注意,有許多較晚的語言通過底層的方式解決了數組插入和刪除時的時間浪費,如PYTHON。

成人app鏈表的基本思維是,利用結構體的設置,額外開辟出一份內存空間去作指針,它總是指向下一個結點,一個個結點通過NEXT指針相互練習,串聯,這就形成了我們的鏈表。

22.png

成人app(圖為單鏈表的一個結點結構)

其中DATA為自定義的數據類型,可以是簡單的int型,也可以是復雜的struct結構體類型,而NEXT為指向下一個鏈表結點的指針,通過訪問NEXT,可以引導我們去訪問鏈表的下一個結點。

成人app對于一連串的結點而言,就形成了我們的鏈表:

23.png

成人app我們要進行上文所說的插入刪除操作也就相當簡單,只需要修改指針所指向的區域就可以了,不需要進行大量的數據移動操作。

24.png

成人app相比起數組,鏈表解決了數組不方便移動,插入,刪除元素的弊端,但相應的,鏈表付出了更加大的內存犧牲換來的這些功能的實現。

 

上文介紹的是單鏈表,接下來的本章節會依次給各位介紹:單鏈表,雙鏈表,循環單鏈表,其功能不同但實現方式均大同小異。

25.jpg

(圖示為接下來學習的幾種鏈表的區別)



本文固定URL:http://hnsaiyang.com/course/95

下一課:單鏈表一
第一章 數據結構入門
第二章 鏈表
第三章 棧
第四章 隊列
第五章 從C語言到C++
第六章 串,數組,矩陣,廣義表
第七章 樹
第八章 圖
第九章 算法—查找
第十章 算法—排序
第十一章 算法&競賽,思維培養
第十二章 后記
Dotcpp在線編譯      (登錄可減少運行等待時間)