【线性表4】线性表的链式实现:静态表
簡介
靜態表依然是一種鏈表,只不過結點是存儲在預先分配好的一個大的結點數組中的。使用靜態表的場合是:有些編程語言沒有指針,但有數組,因此就不能使用傳統的鏈表,這個時候就可以使用靜態表是去實現。
特點:結點的 “指針域” 保存的是下一個結點在數組中的索引。它依然是鏈表,不支持隨機訪問。
靜態表在實際編程中并不常用。
?
靜態表的原理
如下是一個表內容為 【'A' , 'B' , 'C' , 'D' , 'E'】 的字符鏈表的剖析圖
?
?
假設 L 是 StaticList ?對象 ,內部使用數組 nodes保存所有結點空間,則從L的成員字段firstNodeIndex可以獲取到第一個結點在數組中的位置,因此
訪問到第一個結點 ?: i = firstNodeIndex ; ? ?
nodes[i] ? ? ? ? ? 第一個結點對象
nodes[i].element ? 第一個結點的數據域
nodes[i].next ? ? ?第一個結點的“指針域”
?
訪問到第二個結點 ?: i = ?nodes[i].next?; ? ?
nodes[i] ? ? ? ?第二個結點對象
nodes[i].element ? ? 第二個結點的數據域
nodes[i].next ? ? ? ? 第二個結點的“指針域”
?
如此下去......當訪問到的結點的next為-1時,表示它是最后一個結點。最后一個結點的索引用字段lastNodeIndex保存。
?
我們還用了一個set對象保存結點數組中,空閑的結點的索引。如果需要創建新的結點,則從這個集合里任意取出一個索引并從set中移除。如果有結點被刪除或者數組擴充了容量,則將這些結點的索引添加到set中使之可以再被利用。
?
由于靜態表也是一種鏈表,因此插入,刪除數據也不需要移動數組元素,只需修改結點的“指針域”即可。
?
總結
以上是生活随笔為你收集整理的【线性表4】线性表的链式实现:静态表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SEO配置信息操作文档
- 下一篇: Material DesignDrawe