数组和链表的区别以及应用场景
數(shù)組和鏈表的區(qū)別以及應用場景
首先我們要先理解什么是數(shù)組和鏈表
在計算機中要對給定的數(shù)據(jù)集進行若干處理,首要任務是把數(shù)據(jù)集的一部分(當數(shù)據(jù)量非常大時,可能只能一部分一部分地讀取數(shù)據(jù)到內(nèi)存中來處理)或全部存儲到內(nèi)存中,然后再對內(nèi)存中的數(shù)據(jù)進行各種處理。
例如,對于數(shù)據(jù)集 S{1,2,3,4,5,6},要求 S 中元素的和,首先要把數(shù)據(jù)存儲到內(nèi)存中,然后再將內(nèi)存中的數(shù)據(jù)相加。
當內(nèi)存空間中有足夠大的連續(xù)空間時,可以把數(shù)據(jù)連續(xù)的存放在內(nèi)存中,各種編程語言中的數(shù)組一般都是按這種方式存儲的(也可能有例外)
內(nèi)存中的存儲形式可以分為連續(xù)存儲和離散存儲兩種。因此,數(shù)據(jù)的物理存儲結構就有連續(xù)存儲和離散存儲兩種,它們對應了我們通常所說的數(shù)組和鏈表,
數(shù)組和鏈表的區(qū)別
- 數(shù)組:
數(shù)組是將元素在內(nèi)存中連續(xù)存儲的;它的優(yōu)點:因為數(shù)據(jù)是連續(xù)存儲的,內(nèi)存地址連續(xù),所以在查找數(shù)據(jù)的時候效率比較高;它的缺點:在存儲之前,我們需要申請一塊連續(xù)的內(nèi)存空間,并且在編譯的時候就必須確定好它的空間的大小。在運行的時候空間的大小是無法隨著你的需要進行增加和減少而改變的,當數(shù)據(jù)兩比較大的時候,有可能會出現(xiàn)越界的情況,數(shù)據(jù)比較小的時候,又有可能會浪費掉內(nèi)存空間。在改變數(shù)據(jù)個數(shù)時,增加、插入、刪除數(shù)據(jù)效率比較低。
- 鏈表:
鏈表是動態(tài)申請內(nèi)存空間,不需要像數(shù)組需要提前申請好內(nèi)存的大小,鏈表只需在用的時候申請就可以,根據(jù)需要來動態(tài)申請或者刪除內(nèi)存空間,對于數(shù)據(jù)增加和刪除以及插入比數(shù)組靈活。還有就是鏈表中數(shù)據(jù)在內(nèi)存中可以在任
鏈表和數(shù)組使用場景
- 數(shù)組應用場景:
數(shù)據(jù)比較少;經(jīng)常做的運算是按序號訪問數(shù)據(jù)元素;數(shù)組更容易實現(xiàn),任何高級語言都支持;構建的線性表較穩(wěn)定。
- 鏈表應用場景:
對線性表的長度或者規(guī)模難以估計;頻繁做插入刪除操作;構建動態(tài)性比較強的線性表。
總結
以上是生活随笔為你收集整理的数组和链表的区别以及应用场景的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 并发集合和普通集合以及安全集合的区别
- 下一篇: 关于Mybatis的各种配置文件