// 建立乙個鍊錶
/** * 建立乙個鍊錶的節點,每乙個鍊錶都是跟節點
* @param value
* @constructor
*/function
node
(value)
let a =
newnode
('a');
let b =
newnode
('b');
let c =
newnode
('c');
let d =
newnode
('d');
let w =
newnode
('w');
a.next = b;
b.next = c;
c.next = d;
/** * 獲取鍊錶的長度,原型方法
* @returns
*/node.prototype.
length
=function()
return index;
}/**
* 獲取鍊錶的長度,直接方法
* @param root
* @returns
*/function
length
(root)
/** * 變數鍊錶原型方法
*/node.prototype.
print
=function()
_print
(this);
}/**
* 列印鍊錶的方法
* @param root
* @returns
*/function
print
(root)
}/**
* 通過下標獲取鍊錶的值, 原型方法
* @param i
* @returns
*/node.prototype.
getvalue
=function
(i)return
_getvalue
(this,0
);}/**
* 通過下標給鍊錶設定值
* @param i
* @param val
*/node.prototype.
setvalue
=function
(i, val)
_setvalue
(this,0
)}/** * 判斷鍊錶是否存在某個節點
* @param node 節點
* @returns
*/node.prototype.
has=
function
(node)
return
false
}/**
* 判斷節點是否存在鍊錶中
* @param root
* @param node
* @returns
*/function
has(root, node)
/** * 在乙個節點之後加入乙個新的節點
* @param node
* @param val
* @returns
*/node.prototype.
insertafternode
=function
(node, val)
temp = temp.next;}}
/** * 在鍊錶的任意乙個節點後面插入乙個新的節點
* @param root 鍊錶
* @param node 節點
* @param val
*/function
insertafternode
(root, node, val)
else
}/**
* 鍊錶最後加入乙個新的節點
* @param val
* @returns
*/node.prototype.
push
=function
(val)
temp = temp.next;}}
/** * 在鍊錶的最後加入新的節點
* @param root
* @param val
* @returns
*/function
push
(root, val)
else
push
(root.next, val);}
/** * 通過節點刪除乙個節點
* @param node
* @returns
*/node.prototype.
del=
function
(node)
else temp = temp.next;}}
/** * 刪除乙個節點
* @param root
* @param node
* @returns
*/function
del(root, node)
else
del(root.next, node);}
/** * 字串的逆置
*/node.prototype.
reverse
=function()
else
}return
_reverse
(this).
print()
;}
鍊錶 常規操作
單鏈表反轉 方法一 考慮如何將乙個單鏈表反轉,一開始的靈感是由頭插法建立單鏈表演算法而來的,即事先建立乙個空的單鏈表,在遍歷單鏈表的同時,不斷的將結點從頭插入到空煉表中,這樣一來,就建立出了單鏈表的反轉鍊錶。演算法思路 時間複雜度o n 空間複雜度o n 具體實現 如下 list list 已知鍊錶...
js實現對鍊錶的操作
關於對鍊錶這種資料結構,原來在c語言中有提到過,鍊錶一種長度可變的動態列表。分為單向列表和雙向列表。定義乙個幾點型別建構函式 function node v function arraylist 在第no個節點後面新增乙個新節點 this insertat function no,v else no...
js 實現鍊錶
我們通常會在c 這類語言中學習到鍊錶的概念,但是在js中由於我們可以動態的擴充陣列,加之有豐富的原生api。我們通常並不需要實現鍊錶結構。由於突發奇想,我打算用js實現一下 首先我們要建立鍊錶 1 建立鍊錶 2function createlinknode data,pre,next 8this.n...