91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

野生前端的數據結構基礎練習(3)——鏈表

發布時間:2020-07-13 07:23:05 來源:網絡 閱讀:405 作者:大史不說話 欄目:開發技術

野生前端的數據結構基礎練習(3)——鏈表

網上的相關教程非常多,基礎知識自行搜索即可。

習題主要選自Orelly出版的《數據結構與算法javascript描述》一書。

參考代碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/List

鏈表的基本知識

  • 特點:

    鏈表由節點組成,每個節點增加一個對象的引用指向它的后繼節點。鏈表也就是將一個線性表轉換為一個存儲空間上不連續,而在抽象層面可連續訪問的表。

  • 用途:

    更快的插入和刪除,因為只需要操作插入刪除位置相鄰元素即可,如果在線性表中,操作中間位置的元素后,后續的元素位置都需要調整。javascript中的應用例如原型鏈。

  • 基本屬性

    • element當前節點的值
    • next下一個節點
  • 基本方法

    • insert(item, newitem)在item后面插入一個新元素newitem

    插入一個元素,需要將item元素節點的next指向新元素,新元素的next指向item元素的后繼元素。

    • remove(pos)從隊頭刪除一個元素

    刪除一個節點時,需要將其前驅節點的next指向其后繼節點即可。

    • find(element)查詢值為element的節點位置

    • findpre(element)查詢值為element的節點的前一個節點

    • display()顯示整個鏈表

基本練習

  1. 根據鏈表的基本特性實現一個LinkedList類,并在后續題目中需要用鏈表時使用它。

    【注意點】:刪除指定元素時,由于需要修改指定元素前一個節點的next指針,所以當所查找的節點存在時,搜索方法應當返回其前一個節點以供后續步驟使用。

  2. 實現一個雙向鏈表TwoWayLinkedList類。

    【注意點】:每一個實例會記錄前驅節點和后繼節點,雙向鏈表比單鏈表增加了反向遍歷的能力,并且由于所查找節點的屬性中包含了前驅和后繼節點的信息,故插入節點和刪除節點時使用同一個搜索方法即可。

  3. LinkedList類為參考基準,實現一個循環鏈表CircularLinkedList類。

    【注意點】:循環鏈表的特點是尾節點的next指針指向了頭節點。

課后習題(書中第六節習題)

  1. 實現Advance(n)方法,使節點向前移動n個節點。
  2. 實現back(n)方法,使節點向后移動n個節點。
  3. 實現show()方法,只顯示當前節點上的數據。
  4. (略)
  5. (略)
  6. 傳說在公元1世紀猶太戰爭中,猶太歷史學家弗拉維奧·約瑟夫斯和他的40個同胞被羅馬士兵包圍,猶太士兵決定寧可自殺也不做俘虜,于是商量出一個自殺方案。他們圍成一個圈,從一個人開始,數到第三個人事將第三個人殺死,然后再數,直到殺光所有人,約瑟夫和另一個人決定不參加這個瘋狂的游戲,他們快速地計算出兩個位置,站在那里得以幸存。寫一段將n個人圍成一圈,并且第m個人會被殺掉,計算一圈中哪兩個人最后會存貨,使用循環鏈表解決該問題。

習題思路

  1. 向前移動n個位置,在位置驗證合法時相當于,從原位置刪除一個節點,在新位置插入一個節點,為操作方便直接使用雙向鏈表來實現即可。【注意點】:示例代碼中直接以放入鏈表的值為依據進行節點查找,故不支持重復數據,可為節點增加index屬性來區分相同數據。
    野生前端的數據結構基礎練習(3)——鏈表

  2. 與上一題同理。

  3. 很好實現。

  4. 使用一個單鏈表來存儲輸入的成績即可,當最后一個成績節點的指針指向null即可。

  5. 用值為1-40的元素循環鏈表來刪除節點直到總節點數目只剩2個為止。為了方便統計剩余元素的數量,為鏈表增加一個count屬性來記錄元素個數。
    野生前端的數據結構基礎練習(3)——鏈表
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

确山县| 中牟县| 光山县| 马公市| 娱乐| 青河县| 临汾市| 双城市| 石台县| 玉龙| 松滋市| 法库县| 晋宁县| 宁都县| 图木舒克市| 百色市| 专栏| 正蓝旗| 马关县| 通许县| 达日县| 东乡县| 石门县| 揭东县| 武山县| 绍兴县| 临沭县| 北海市| 光山县| 新郑市| 调兵山市| 五河县| 天镇县| 娄烦县| 疏附县| 开阳县| 无锡市| 焦作市| 恭城| 嵩明县| 岱山县|