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