java 数据结构 快速入门_Java 数据结构快速入门
數(shù)據(jù)結(jié)構(gòu):棧
簡介
棧(stack),又稱堆棧,它是運(yùn)算受限的線性表。
限制
棧(stack)的限制是僅允許在標(biāo)的一端進(jìn)行插入和刪除操作,不允許在其他任何位置進(jìn)行添加、查找、刪除等操作。
采用該結(jié)構(gòu)的特點(diǎn)
1、先進(jìn)后出(即:存進(jìn)去的元素,要在后它后面的元素依次取出后,オ能取出該元素)。
2、棧的入口、出口的都是棧的頂端位置。
例如
子彈壓進(jìn)彈夾先壓進(jìn)去的子彈在下面,后壓進(jìn)去的子弾在上面,當(dāng)開槍時,先彈出上面的子彈,然后才能彈出下面的子彈。
說明
棧(stack):彈夾
入棧(壓棧):向彈夾中添加子彈
出棧(彈棧):子彈從彈夾中彈出來
數(shù)據(jù)結(jié)構(gòu):隊列
簡介
隊列(queue),簡稱隊,它同堆棧一樣,也是一種運(yùn)算受限的線性表。
限制
隊列的限制是僅允許在表的一端進(jìn)行插入而在表的另一端進(jìn)行刪除。
采用該結(jié)構(gòu)的特點(diǎn)
1、先進(jìn)先出(即:存進(jìn)去的元素,要在后它前面的元素依次取出后,オ能取出該元素)。
2、隊列的入口、出口各占一側(cè)。
例如
小火車過山洞,車頭先進(jìn)去,車尾后進(jìn)去;車頭先出來,車尾后出來。
數(shù)據(jù)結(jié)構(gòu):數(shù)組
簡介
數(shù)組(Array)是有序的元素序列,數(shù)組是在堆內(nèi)存中開辟一段連實(shí)的空間,并在此空間存放元素。
采用該結(jié)構(gòu)的特點(diǎn)
1、查找元素快
2、增刪元素慢
為什么說數(shù)組查找元素快,增刪元素慢
1、數(shù)組查詢快:數(shù)組的地址是連續(xù)的我們通過數(shù)組的首地址可以找到數(shù)組,通過數(shù)組的素引可以快速查找某一個
2、元素增刪慢:數(shù)組的長度是固定的我們想要增加/刪除一個元素,必須創(chuàng)建一個新數(shù)組把源數(shù)組的數(shù)據(jù)復(fù)制過來
3、增刪元素,會在堆內(nèi)存中頻繁的創(chuàng)建新數(shù)組、復(fù)制數(shù)組中的元素、銷毀數(shù)組,導(dǎo)致效率低下
例如
一排出租屋,有100個房間,從001到100每個房間都有固定編號,通過編號就可以快速找到租房子的人。
數(shù)據(jù)結(jié)構(gòu):鏈表
簡介
鏈表(linked、list)由一系列結(jié)點(diǎn)node(鏈表中毎一個元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時動態(tài)生成。
每個結(jié)點(diǎn)包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲結(jié)點(diǎn)地址的指針域。
鏈表結(jié)構(gòu)有單向鏈表與雙向鏈表
單向鏈表
鏈表中只有一條鏈子,不能保證元素的順序(存儲元素和取出元素的順序有可能不一致)
雙向鏈表
鏈表中有兩條鏈子有一條鏈子是專門記錄元素的順序,是一個有序的集合
說明
鏈表中的每一個元素也稱之為一個節(jié)點(diǎn)
一個節(jié)點(diǎn)包含了一個數(shù)據(jù)源(存儲數(shù)據(jù)),兩個指針域(存儲地址),一個指針域存儲本節(jié)點(diǎn)的地址,一個指針域存儲第一個節(jié)點(diǎn)的地址
采用該結(jié)構(gòu)的特點(diǎn)
多個結(jié)點(diǎn)之間,通過地址進(jìn)行連接。例如:多個人手拉手,每個人使用自己的右手拉住下個人的左手,依次類推,這樣多個人就連在一起了。
查找元素慢:想查找某個元素,需要通過連接的節(jié)點(diǎn),依次向后查找指定元素。
增刪元素快:增加或刪除某個元素只需修改一下連接元素之間的地址值即可
為什么說鏈表查詢慢,增刪快
查詢慢:鏈表中地址不是連續(xù)的每次查詢元素都必須從頭開始查詢
增刪快:鏈表結(jié)構(gòu)增加/刪除一個元素對鏈表的整體結(jié)構(gòu)沒有影響,所以增刪快
圖形理解
每個node
單向鏈表node之間的連接(無序的)
雙向鏈表node之間的連接(有序的)
假如想要增刪數(shù)據(jù),只需更改連接下一個node的地址值即可
數(shù)據(jù)額結(jié)構(gòu):紅黑樹
首先簡單了解一下計算機(jī)中的樹(如圖:“下面分支的連接不是箭頭,而是線”)
什么是二叉樹
分支不能夠超過兩個的樹
如:
什么是排序樹/查找樹
在二叉樹的基礎(chǔ)上,元素是有大小順序的,左子樹小,右子樹大
如:
平衡樹
左子樹 = 右子樹
如:
不平衡樹
左子樹 != 右子樹
如:
紅黑樹
特點(diǎn)
趨近于平衡樹,查詢的速度非常的快,查詢?nèi)~子節(jié)點(diǎn)最大次數(shù)和最小次數(shù)不能超過2倍
約束
1.節(jié)點(diǎn)可以是紅色的或者黑色的
2.根節(jié)點(diǎn)是黑色的
3.葉子節(jié)點(diǎn)(空節(jié)點(diǎn))是黑色的
4.每個紅色的節(jié)點(diǎn)的子節(jié)點(diǎn)都是黑色的
5.任何一個節(jié)點(diǎn)到其每個葉子節(jié)點(diǎn)的所有路徑上黑色節(jié)點(diǎn)數(shù)相同
例如:
原文:https://www.cnblogs.com/liyihua/p/12188539.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的java 数据结构 快速入门_Java 数据结构快速入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java简易计算器考察什么_练习:用ja
- 下一篇: java模块是什么6_Java 9 揭秘