線性表是一種線性結(jié)構(gòu),它是具有相同類型的n(n≥0)個數(shù)據(jù)元素組成的有限序列与学。
數(shù)組
數(shù)組有上界和下界彤悔,數(shù)組的元素在上下界內(nèi)是連續(xù)的。
存儲10,20,30,40,50的數(shù)組的示意圖如下:
數(shù)組的特點是:數(shù)據(jù)是連續(xù)的索守;隨機訪問速度快晕窑。
數(shù)組中稍微復(fù)雜一點的是多維數(shù)組和動態(tài)數(shù)組。對于C語言而言卵佛,多維數(shù)組本質(zhì)上也是通過一維數(shù)組實現(xiàn)的杨赤。至于動態(tài)數(shù)組,是指數(shù)組的容量能動態(tài)增長的數(shù)組截汪;對于C語言而言疾牲,若要提供動態(tài)數(shù)組,需要手動實現(xiàn)衙解;而對于C++而言阳柔,STL提供了Vector;對于Java而言蚓峦,Collection集合中提供了ArrayList和Vector盔沫。
單鏈表
單向鏈表(單鏈表)是鏈表的一種医咨,它由節(jié)點組成,每個節(jié)點都包含下一個節(jié)點的指針架诞。
表頭為空拟淮,表頭的后繼節(jié)點是"節(jié)點10"(數(shù)據(jù)為10的節(jié)點),"節(jié)點10"的后繼節(jié)點是"節(jié)點20"(數(shù)據(jù)為10的節(jié)點)
-
單向鏈表刪除節(jié)點
單鏈表刪除節(jié)點
刪除"節(jié)點30"
刪除之前:"節(jié)點20" 的后繼節(jié)點為"節(jié)點30"谴忧,而"節(jié)點30" 的后繼節(jié)點為"節(jié)點40"很泊。
刪除之后:"節(jié)點20" 的后繼節(jié)點為"節(jié)點40"。 -
單鏈表增加節(jié)點
單鏈表增加節(jié)點
在"節(jié)點10"與"節(jié)點20"之間添加"節(jié)點15"
添加之前:"節(jié)點10" 的后繼節(jié)點為"節(jié)點20"沾谓。
添加之后:"節(jié)點10" 的后繼節(jié)點為"節(jié)點15"委造,而"節(jié)點15" 的后繼節(jié)點為"節(jié)點20"。
單鏈表的特點是:節(jié)點的鏈接方向是單向的均驶;相對于數(shù)組來說昏兆,單鏈表的的隨機訪問速度較慢,但是單鏈表刪除/添加數(shù)據(jù)的效率很高妇穴。
雙向鏈表
雙向鏈表(雙鏈表)是鏈表的一種爬虱。和單鏈表一樣,雙鏈表也是由節(jié)點組成腾它,它的每個數(shù)據(jù)結(jié)點中都有兩個指針跑筝,分別指向直接后繼和直接前驅(qū)。所以瞒滴,從雙向鏈表中的任意一個結(jié)點開始曲梗,都可以很方便地訪問它的前驅(qū)結(jié)點和后繼結(jié)點。一般我們都構(gòu)造雙向循環(huán)鏈表妓忍。
表頭為空虏两,表頭的后繼節(jié)點為"節(jié)點10"(數(shù)據(jù)為10的節(jié)點);"節(jié)點10"的后繼節(jié)點是"節(jié)點20"(數(shù)據(jù)為10的節(jié)點)世剖,"節(jié)點20"的前繼節(jié)點是"節(jié)點10"定罢;"節(jié)點20"的后繼節(jié)點是"節(jié)點30","節(jié)點30"的前繼節(jié)點是"節(jié)點20"搁廓;...引颈;末尾節(jié)點的后繼節(jié)點是表頭耕皮。
-
雙鏈表刪除節(jié)點
雙鏈表刪除節(jié)點
刪除"節(jié)點30"
刪除之前:"節(jié)點20"的后繼節(jié)點為"節(jié)點30"境蜕,"節(jié)點30" 的前繼節(jié)點為"節(jié)點20"。"節(jié)點30"的后繼節(jié)點為"節(jié)點40"凌停,"節(jié)點40" 的前繼節(jié)點為"節(jié)點30"粱年。
刪除之后:"節(jié)點20"的后繼節(jié)點為"節(jié)點40","節(jié)點40" 的前繼節(jié)點為"節(jié)點20"罚拟。 -
雙鏈表增加節(jié)點
雙鏈表增加節(jié)點
在"節(jié)點10"與"節(jié)點20"之間添加"節(jié)點15"
添加之前:"節(jié)點10"的后繼節(jié)點為"節(jié)點20"台诗,"節(jié)點20" 的前繼節(jié)點為"節(jié)點10"完箩。
添加之后:"節(jié)點10"的后繼節(jié)點為"節(jié)點15","節(jié)點15" 的前繼節(jié)點為"節(jié)點10"拉队。"節(jié)點15"的后繼節(jié)點為"節(jié)點20"弊知,"節(jié)點20" 的前繼節(jié)點為"節(jié)點15"。