數組
數組有上界和下界,數組的元素在上下界內是連續的。
存儲10,20,30,40,50的數組的示意圖如下:
數組的特點是:數據是連續的;隨機訪問速度快。
數組中稍微複雜一點的是多維數組和動態數組。對於C語言而言,多維數組本質上也是通過一維數組實現的。至於動態數組,是指數組的容量能動態增長的數組;對於C語言而言,若要提供動態數組,需要手動實現;而對於C++而言,STL提供了Vector;對於Java而言,Collection集合中提供了ArrayList和Vector。
單向鏈表
單向鏈表(單鏈表)是鏈表的一種,它由節點組成,每個節點都包含下一個節點的指針。
單鏈表的示意圖如下:
表頭為空,表頭的後繼節點是"節點10"(數據為10的節點),"節點10"的後繼節點是"節點20"(數據為10的節點),...
單鏈表刪除節點
刪除"節點30"
刪除之前:"節點20" 的後繼節點為"節點30",而"節點30" 的後繼節點為"節點40"。
刪除之後:"節點20" 的後繼節點為"節點40"。
單鏈表添加節點
在"節點10"與"節點20"之間添加"節點15"
添加之前:"節點10" 的後繼節點為"節點20"。
添加之後:"節點10" 的後繼節點為"節點15",而"節點15" 的後繼節點為"節點20"。
單鏈表的特點是:節點的鏈接方向是單向的;相對於數組來說,單鏈表的的隨機訪問速度較慢,但是單鏈表刪除/添加數據的效率很高。
雙向鏈表
雙向鏈表(雙鏈表)是鏈表的一種。和單鏈表一樣,雙鏈表也是由節點組成,它的每個數據結點中都有兩個指針,分別指向直接後繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向循環鏈表。
雙鏈表的示意圖如下:
表頭為空,表頭的後繼節點為"節點10"(數據為10的節點);"節點10"的後繼節點是"節點20"(數據為10的節點),"節點20"的前繼節點是"節點10";"節點20"的後繼節點是"節點30","節點30"的前繼節點是"節點20";...;末尾節點的後繼節點是表頭。
雙鏈表刪除節點
刪除"節點30"
刪除之前:"節點20"的後繼節點為"節點30","節點30" 的前繼節點為"節點20"。"節點30"的後繼節點為"節點40","節點40" 的前繼節點為"節點30"。
刪除之後:"節點20"的後繼節點為"節點40","節點40" 的前繼節點為"節點20"。
雙鏈表添加節點
在"節點10"與"節點20"之間添加"節點15"
添加之前:"節點10"的後繼節點為"節點20","節點20" 的前繼節點為"節點10"。
添加之後:"節點10"的後繼節點為"節點15","節點15" 的前繼節點為"節點10"。"節點15"的後繼節點為"節點20","節點20" 的前繼節點為"節點15"。
文章修改參考http://www.cnblogs.com/skywang12345/p/3561803.html
喜歡我的文章的話,就關注我吧!在本頭條號的置頂文章中有【文章分類】包含:
[C++進階篇系列]
[高級網絡編程篇系列]
[Linux系統篇系列]
[C++基礎知識篇]
[協議篇系列]
[數據結構和算法系列]
[設計模式系列]
不要只收藏和轉發哦,寫文章其實很累的。
閱讀更多 cpp軟件架構獅 的文章