js 實現鍊錶的常規操作

2021-10-11 01:53:59 字數 2799 閱讀 6868

// 建立乙個鍊錶

/** * 建立乙個鍊錶的節點,每乙個鍊錶都是跟節點

* @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...