js版資料結構 04鍊錶(1)

2021-10-04 18:25:41 字數 2013 閱讀 8844

從本篇開始我將用三篇博文寫總結js對鍊錶的操作

在本篇博文你會了解到:

建立單鏈錶類:(可能c不太好的不理解為什麼這裡要建立節點類,鍊錶的節點是由資料域和指標域構成的,沒有現成的資料結構可以用來儲存它們。既然是c的兒子,老爹可以用結構和指標建立,那麼js就用類的成員變數來模仿唄)

// 建立乙個節點類

class

lnode

}//鍊錶類

class

linklist

}

這裡我們不管什麼頭插尾插有無頭節點的那一套。我們還是和前倆節相似,實現以下功能。

還是先來體驗套娃娃吧。先實現push,畢竟沒有真正的指標,相信大家對實現指標域的方法還是有一絲絲好奇的吧

push

(e)else

current.next = node;}}

//測試**

let linklist =

newlinklist()

; linklist.

push(1

) linklist.

push(2

) linklist.

push(3

) linklist.

push(4

) console.

log(linklist)

;

看圖:

哈哈,好玩不。我大js雖然沒有指標,但是做不了你兄弟我做你親爸爸,我把你整個節點作為我next屬性的乙個屬性值,物件巢狀

其他功能的實現:

removeat方法

removeat

(index)

else

previous.next = current.next;

}this

.count--

;return current.element;

}else

}

如果有些迷的話,回憶一下c

想起來了吧,沒錯c中這裡的關鍵**是p->next=q->next;然後再把q指標所指的節點delete掉。

js這裡也是一樣的(醜圖理解)單鏈表的特點就是節點得順著頭節點往下找啊

獲取指定位置的節點

getelementat

(index)

return node;

}else

}

在任意位置插入

// 在任意位置插入

insert

(e, index)

else

this

.count++

;return

true;}

else

}

返回指定元素的位置

// 返回乙個元素的位置

indexof

(e)else

}// 迴圈完鍊錶仍然沒有找到

return-1

;}

刪除乙個指定元素(僅匹配第乙個),返長度,判空

// 刪除指定元素

remove

(e)size()

isempty()

}

js資料結構 鍊錶

大家都用過js中的陣列,陣列其實是一種線性表的順序儲存結構,它的特點是用一組位址連續的儲存單元依次儲存資料元素。而它的缺點也正是其特點而造成,比如對陣列做刪除或者插入的時候,可能需要移動大量的元素。這裡大致模擬一下陣列的插入操作 function insert arr,index,data arr ...

js資料結構 鍊錶

大家都用過js中的陣列,陣列其實是一種線性表的順序儲存結構,它的特點是用一組位址連續的儲存單元依次儲存資料元素。而它的缺點也正是其特點而造成,比如對陣列做刪除或者插入的時候,可能需要移動大量的元素。這裡大致模擬一下陣列的插入操作 function insert arr,index,data arr ...

資料結構 C 版 鍊錶

大家如果有什麼問題,可以給我發email warensoft foxmail.com 下面是c 版鍊錶的實現過程 分為兩個類 1.csarraylistnode 類,用於表示乙個結點 2.csarraylist,用於表示鍊錶本身 下面是這兩個類的檢視 大家可以根據檢視得到這兩個類的基本結構 中有詳細...