溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java常見(jiàn)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)是什么

發(fā)布時(shí)間:2022-05-20 11:02:14 來(lái)源:億速云 閱讀:155 作者:zzz 欄目:大數(shù)據(jù)

今天小編給大家分享一下Java常見(jiàn)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

棧:

stack,又稱(chēng)堆棧,他是運(yùn)算受限的線性表,其限制是僅允許在表的一端進(jìn)行插入和刪除操作,不允許在其他任何位置進(jìn)行添加、查找、刪除等操作。

簡(jiǎn)單的來(lái)說(shuō),采用該結(jié)構(gòu)的集合,對(duì)元素的存取有如下幾個(gè)特點(diǎn)

1、先進(jìn)后出。

2、棧的入口、出口都是棧的頂端位置。

壓棧:就是存元素,把元素存儲(chǔ)到棧的頂端位置,棧中已有元素一次向棧底方向移動(dòng)一個(gè)位置。

彈棧:就是取元素,把棧頂端的元素取出,棧中已有元素依次向棧頂方向移動(dòng)一個(gè)位置。

隊(duì)列:

queue,簡(jiǎn)稱(chēng)隊(duì),它同堆棧一樣,也是運(yùn)算受限的線性表,其限制是只允許在表的一端進(jìn)行插入,而在表的另一端進(jìn)行刪除。

簡(jiǎn)單來(lái)說(shuō),采用該結(jié)構(gòu)的集合,對(duì)元素的存取有如下的特點(diǎn):

1、先進(jìn)先出

2、隊(duì)列的入口、出口各占一側(cè),例如左側(cè)為入口,右側(cè)為出口

數(shù)組:

Array,是一個(gè)有序的元素序列,數(shù)組是在內(nèi)存中開(kāi)辟出一端連續(xù)的空間,并在此空間存放元素,可以通過(guò)索引快速找到對(duì)應(yīng)的數(shù)據(jù)。

采用此方式存儲(chǔ)數(shù)據(jù)有如下幾個(gè)特點(diǎn):

1、查找元素快,通過(guò)索引可以快速訪問(wèn)指定位置的元素。

2、增刪元素慢,在指定索引位置增加元素,需要?jiǎng)?chuàng)建一個(gè)新的數(shù)組,將指定新元素存儲(chǔ)在指定的索引位置,然后再把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對(duì)應(yīng)的索引位置

刪除元素,需要?jiǎng)?chuàng)建一個(gè)新數(shù)組,把原數(shù)組元素根據(jù)索引,復(fù)制到新數(shù)組對(duì)應(yīng)索引的位置,原數(shù)組中指定索引位置元素不復(fù)制到新數(shù)組中。

鏈表:

Linked List,由一系列結(jié)點(diǎn)node組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。鏈表分為單向鏈表和雙向鏈表,雙向鏈表是指有上一個(gè)結(jié)點(diǎn)的引用和下一個(gè)結(jié)點(diǎn)的指針,單向鏈表是只有下一個(gè)結(jié)點(diǎn)的指針。

簡(jiǎn)單的說(shuō),采用該數(shù)據(jù)結(jié)構(gòu)的集合,對(duì)數(shù)據(jù)的存儲(chǔ)有如下幾個(gè)特點(diǎn):

  • 多個(gè)結(jié)點(diǎn)之間,通過(guò)地址進(jìn)行連接。

  • 查詢(xún)慢,如果想查找某個(gè)元素,需要通過(guò)連接的結(jié)點(diǎn)依次向后查找。

  • 增刪快,只需要修改連接下一個(gè)元素的地址即可。

紅黑樹(shù):

二叉樹(shù):是每個(gè)結(jié)點(diǎn)不超過(guò)2的有序樹(shù)

簡(jiǎn)單理解,二叉樹(shù)是每個(gè)結(jié)點(diǎn)最多有兩個(gè)子樹(shù)的樹(shù)結(jié)構(gòu)。頂上的叫根節(jié)點(diǎn),兩邊被稱(chēng)作為左子樹(shù)和右子樹(shù)。

紅黑樹(shù)本身就是一顆二叉查找數(shù),將節(jié)點(diǎn)插入后,該數(shù)仍然是一顆二叉查找數(shù),也就意味之?dāng)?shù)的鍵值仍然是有序的。

紅黑樹(shù)的約束:

  • 節(jié)點(diǎn)可以是紅色的或者黑色的

  • 根節(jié)點(diǎn)是黑色的

  • 葉子節(jié)點(diǎn)是黑色的

  • 每個(gè)紅色節(jié)點(diǎn)的子節(jié)點(diǎn)都是黑色的

  • 任何一個(gè)節(jié)點(diǎn)到其每一個(gè)葉子節(jié)點(diǎn)的所有路徑上黑色節(jié)點(diǎn)數(shù)相同

紅黑樹(shù)的特點(diǎn):

速度特別快,趨近平衡樹(shù),查找葉子元素最少和最多次數(shù)不多于兩倍。

以上就是“Java常見(jiàn)基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI