陣列(列表)是一種簡單的儲存資料序列的資料結構,要儲存多個元素,陣列(列表)可能是最常用的資料結構。
資料結構
鍊錶儲存有序的元素集合,不同於陣列,鍊錶中的元素在記憶體中並不是連續放置的。
鍊錶
鍊錶
相對於傳統的陣列,鍊錶的好處在於,新增或移除元素的時候不需要移動其他元素。然後,鍊錶需要使用指標,因此實現鍊錶時需額外注意。
鍊錶
陣列的另乙個細節是可以直接訪問任何位置的任何元素,而想要訪問鍊錶中間的乙個元素,需要從起點(表頭)開始迭代列表直到找到所需的元素。
除了對資料的隨機訪問,鍊錶幾乎可以用任何可以使用一維陣列的情況中,如果需要隨機訪問,陣列仍然是更好的選擇。
鍊錶是由一組節點組成的集合,每個節點都使用乙個物件的引用指向它的後繼。指向另乙個節點的引用叫做鏈。
鍊錶
鍊錶
有頭結點的鍊錶
鍊錶中插入乙個節點的效率很高,向鍊錶中插入乙個節點,需要修改它前面的節點(前驅),使其指向新加入的節點,而新加入的節點則指向原來前驅指向的節點。
向鍊錶中插入元素
從鍊錶中刪除元素,將帶刪除元素的前驅節點指向待刪除元素的後繼節點,同時將待刪除元素指向為null,元素就刪除成功了。
從鍊錶中刪除元素
/*節點類*/
function node(element)
/*查詢給定元素的節點*/
function find(element)
return current;
}function previous(item)
return node;
}function remove(item)
}/*在某節點後插入元素*/
function insert(item, element)
function display()
}/*鍊錶類*/
function llist()
var ll = new llist();
ll.insert('head','conway');
ll.insert('conway','russellville');
ll.insert('russellville','alma');
ll.display();//conway russellville alma
ll.remove('russellville');
ll.display();//conway alma
鍊錶類(linkedlist)需要乙個節點輔助類(node),節點類(node)表示要加入列表的專案。
function linkedlist();
var length = 0;//鍊錶節點的數量,私有屬性。
var head = null;//頭節點
/*鍊錶實現的方法*/
this.insert = function(position,element){};
this.remove = function(element){};
this.indexof = function(element){};
this.removeat = function(position){};
this.isempty = function(){};
this.size = function(){};
this.tostring = function(){};
}
鍊錶最後乙個節點的下乙個元素(場景next
)始終是null
/*向鍊錶尾部追加元素*/
var node = new node(element);
//列表中第乙個節點
if(head === null)else
//找到最後一項將其next賦給node以建立鏈結
向為空的鍊錶新增乙個元素
向不為空的鍊錶追加元素 場景
方法
/*根據給定位置移除某一元素*/
this.removeat = function(position)else
node.next = current;
previous.next = node;
}length++;//更新鍊錶長度
return true;
}else
};
在列表起點新增元素
在列表尾部新增元素
在列表中間新增元素
this.isempty = function();
this.size = function();
this.gethead = function();
/*接收元素的值獲取元素所在位置,若無則返回-1.*/
this.indexof = function(element)
index++;
current = current.next;
}return -1;
};this.remove = function(element);
/*將鍊錶物件轉換成乙個字串*/
this.tostring = function()
return string;
};
鍊錶 環形鍊錶
環形鍊錶也叫迴圈鍊錶 可以是雙鏈表 也可以是單鏈表 操作原理和單鏈表差不多,只是最後乙個節點不在指向空 null 而是頭 head 這裡以單鏈表舉例 description 環形鍊錶 author lzq date 2018 11 3 20 46 version 1.0 public class a...
鍊錶 初識鍊錶
鍊錶 前言 小弟初學資料結構,有錯誤的地方望大家不吝賜教 認識鍊錶 列表相比陣列更具有優勢,鍊錶不同於資料和其他資料結構依靠位置來進行訪問或者其他操作,如陣列是依靠下表來運算元據。而鍊錶是通過關係來尋找或者運算元據。鍊錶的特性 插入 和 刪除 效率高,只需要變更指向的鏈結點即可。但是隨即訪問操作的效...
鍊錶(鍊錶建立)
先找到了一些與單鏈表相關的概念 2.指標域 ai元素儲存指向後繼元素儲存位置的資訊 3.結點 包含資料域和指標域 4.單鏈表 每個結點只包含乙個指標域的線性表 5.頭指標 要素 鍊錶中第乙個結點的儲存位置 線性表最後乙個結點指標為空 6.頭結點 非要素 單鏈表第乙個結點前附設乙個結點 其指標域指向第...