千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 在C語言下數(shù)組array與鏈表linklist各自的優(yōu)點(diǎn)和缺陷是什么?

在C語言下數(shù)組array與鏈表linklist各自的優(yōu)點(diǎn)和缺陷是什么?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-11 05:43:25 1696974205

一、在C語言下數(shù)組array與鏈表linklist各自的優(yōu)點(diǎn)和缺陷

數(shù)組可以通過下標(biāo)訪問,隨機(jī)訪問效率高,鏈表需要通過指針遍歷,訪問效率低。

數(shù)組在分配空間后不能再改變大小,如果滿了之后再放東西就必須重新分配一個較大的內(nèi)存空間,將原來的數(shù)組內(nèi)容拷貝進(jìn)去。而鏈表可以隨意插入,比數(shù)組靈活。

存相同的數(shù)據(jù),鏈表占用的內(nèi)存空間大,因為要分配額外的內(nèi)存存下一個節(jié)點(diǎn)的內(nèi)存地址。

ArrayList

ArrayList是動態(tài)擴(kuò)展數(shù)組,底層是用數(shù)組實(shí)現(xiàn),插入位置有三種情況,從首位插入,中間位置插入,尾部插入。線性表的插入刪除操作都是通過移動來實(shí)現(xiàn)的,由于數(shù)組長度固定不變,插入數(shù)據(jù)時,需要一個新的數(shù)組。1.當(dāng)添加數(shù)據(jù)是在首位插入時,先將新的數(shù)據(jù)放入到新的數(shù)組內(nèi),然后將原始數(shù)組中的數(shù)據(jù)復(fù)制到新的數(shù)組。

2.當(dāng)數(shù)據(jù)插入的位置是中間位置時,先將插入位置前面的數(shù)據(jù)先放到新的數(shù)組里,再放新的數(shù)據(jù),再復(fù)制舊的數(shù)據(jù)完成添加。3.數(shù)據(jù)尾部插入,由于不會影響其他元素,因此會直接插入到后面。

同樣,刪除按位置也有三種情況:1.從頭部刪除,刪除頭結(jié)點(diǎn)然后移動后面的數(shù)據(jù)

2.從中間指定位置刪除,找到要刪除數(shù)據(jù)的位置,刪除后,后面的數(shù)據(jù)移動.3.從尾部刪除:直接刪除尾部數(shù)據(jù)完成刪除操作。

LinkedList

LinkedList是雙向鏈表的數(shù)據(jù)結(jié)構(gòu),底層是用鏈表實(shí)現(xiàn),是由相互引用的節(jié)點(diǎn)組成的雙向鏈表,當(dāng)插入數(shù)據(jù)到某個位置時,這個數(shù)據(jù)會形成一個新的節(jié)點(diǎn),然后改變鏈表中對應(yīng)的兩個節(jié)點(diǎn)的引用關(guān)系就可以完成插入。同樣,刪除數(shù)據(jù)時,刪除對應(yīng)節(jié)點(diǎn)的引用就可以完成刪除操作。

延伸閱讀:

二、鏈表與數(shù)組的主要區(qū)別

(1)數(shù)組的元素個數(shù)是固定的,而組成鏈表的結(jié)點(diǎn)個數(shù)可按需要增減;

(2)數(shù)組元素的存諸單元在數(shù)組定義時分配,鏈表結(jié)點(diǎn)的存儲單元在程序執(zhí)行時動態(tài)向系統(tǒng)申請:

(3)數(shù)組中的元素順序關(guān)系由元素在數(shù)組中的位置(即下標(biāo))確定,鏈表中的結(jié)點(diǎn)順序關(guān)系由結(jié)點(diǎn)所包含的指針來體現(xiàn)。

(4)對于不是固定長度的列表,用可能最大長度的數(shù)組來描述,會浪費(fèi)許多內(nèi)存空間。

(5)對于元素的插人、刪除操作非常頻繁的列表處理場合,用數(shù)組表示列表也是不適宜的。若用鏈表實(shí)現(xiàn),會使程序結(jié)構(gòu)清晰,處理的方法也較為簡便。

  例如:在一個列表中間要插人一個新元素,如用數(shù)組表示列表,為完成插人工作,插人處之后的全部元素必須向后移動一個位置空出的位置用于存儲新元素。

對于在一個列表中刪除一個元素情況,為保持?jǐn)?shù)組中元素相對位置連續(xù)遞增,刪除處之后的元素都得向前移一個位置。如用鏈表實(shí)現(xiàn)列表.鏈表結(jié)點(diǎn)的插人或刪除操作不再需要移動結(jié)點(diǎn),只需改變相關(guān)的結(jié)點(diǎn)中的后繼結(jié)點(diǎn)指針的值即可,與結(jié)點(diǎn)的實(shí)際存儲位置無關(guān)。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
定義數(shù)據(jù)結(jié)構(gòu)中重復(fù)定義結(jié)構(gòu)體類型的作用是什么?

一、定義數(shù)據(jù)結(jié)構(gòu)中重復(fù)定義結(jié)構(gòu)體類型的作用定義數(shù)據(jù)結(jié)構(gòu)中重復(fù)定義結(jié)構(gòu)體類型的作用是為了更加直觀的表達(dá)數(shù)據(jù)類型。比如Position FindMin(Sea...詳情>>

2023-10-11 07:34:37
鏈表什么時候要開辟空間?

一、鏈表什么時候要開辟空間鏈表創(chuàng)建鏈表需要開辟空間,遍歷不需要。1、P 和 Rear 都是指針,是用來存放內(nèi)存地址的變量。2、malloc() 函數(shù),申...詳情>>

2023-10-11 07:26:53
Layer2是什么和Layer1有哪些區(qū)別?

一、Layer2是什么和Layer1的區(qū)別所謂Layer1和Layer2也就是名列前茅層和第二層。其中第0層對應(yīng)OSI模型的底層協(xié)議。Layer2是什么和Layer1的區(qū)別是...詳情>>

2023-10-11 07:12:58
數(shù)據(jù)結(jié)構(gòu)中KMP算法是什么?

一、數(shù)據(jù)結(jié)構(gòu)中KMP算法KMP算法介紹KMP算法是一種改進(jìn)的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人們稱它為克努特—莫...詳情>>

2023-10-11 07:11:44
計算機(jī)網(wǎng)絡(luò)管理軟件有哪些好用?

1、Nagios CoreNagios Core在全球范圍內(nèi)用于幫助監(jiān)控網(wǎng)絡(luò)和跟蹤各種基礎(chǔ)設(shè)施。它的主動監(jiān)控功能可以檢測它負(fù)責(zé)監(jiān)控的服務(wù)器上的網(wǎng)絡(luò)設(shè)備、服務(wù)...詳情>>

2023-10-11 06:33:55
快速通道
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
午夜福利资源片在线 | 亚洲欧洲另类中文字幕 | 久久国产综合91 | 一区与二区精品在线 | 在线看片免费无毒 | 中文字幕制服丝袜不卡 |