线性结构(顺序存储和链式存储)和非线性结构的特点及区别
1. 線性結(jié)構(gòu)
特點:除第一個元素只有一個“后繼”和最后一個元素只有一個“前驅(qū)”,其它每個元素只有一個“前驅(qū)”元素和一個“后繼”元素。
常見的線性結(jié)構(gòu)有:? 數(shù)組、鏈表、棧以及隊列。注意:棧和隊列本身不是一種數(shù)據(jù)結(jié)構(gòu),可通過數(shù)組或鏈表實現(xiàn)。
1.1 線性結(jié)構(gòu)又分為順序存儲和鏈?zhǔn)酱鎯?/strong>
線性結(jié)構(gòu)又分為順序存儲和鏈?zhǔn)酱鎯?#xff0c;順序存儲:各個元素存儲的地址空間連續(xù),邏輯相鄰的元素在物理內(nèi)存中也相鄰,如數(shù)組;
鏈?zhǔn)酱鎯?span style="color:#f33b45;">:各個元素存儲在任意的地址空間,邏輯相鄰的元素在物理內(nèi)存中沒有聯(lián)系,如鏈表。
1.2 順序存儲和鏈?zhǔn)酱鎯Φ膮^(qū)別
1.2.1 順序存儲
優(yōu)點:① 因為各個元素是連續(xù)儲存,而且當(dāng)元素類型一致時占用空間大小一致,所以可以直接通過首元素地址計算
? ? ? ? ? ? ? ?某個元素的內(nèi)存地址,從而訪問特定元素效率很高
? ? ? ? ? ② 對于有序數(shù)組,還可以通過二分查找提高元素查找的速度
缺點:① 由于順序存儲的特點,所以在刪除或插入元素后需要移動其它元素使得整體的存儲空間依然是連續(xù)的,
? ? ? ? ? ? ? ?所以刪除、插入元素效率低,如下圖。
? ? ? ? ? ?② 由于元素存儲空間連續(xù),所以當(dāng)有大數(shù)據(jù)時,較難分配一塊連續(xù)的大內(nèi)存空間。
?
1.2.2 鏈?zhǔn)酱鎯?/strong>
優(yōu)點:① 由于鏈?zhǔn)酱鎯Φ奶攸c,刪除或插入節(jié)點很方便,不需要移動其它元素,改變元素“連接”關(guān)系即可,
? ? ? ? ? ? ? ?所以刪除、插入元素效率高,如下圖。
缺點:① 因為存儲的任意性,只能通過前一個元素訪問下一個元素,每一次訪問元素都從頭節(jié)點開始遍歷,
? ? ? ? ? ? ? ?所以訪問特定元素或查找元素效率低。
?
2. 非線性結(jié)構(gòu)
特點:每個元素可以和多個元素“連接”。
常見的非線性結(jié)構(gòu):二維數(shù)組、樹和圖。
?
?
總結(jié)
以上是生活随笔為你收集整理的线性结构(顺序存储和链式存储)和非线性结构的特点及区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决最短路径的Dijkstra算法详解,
- 下一篇: Tomcat服务器环境配置--查看bat