日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(五)数据结构之“链表”

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (五)数据结构之“链表” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構之“鏈表”

  • 鏈表是什么?
  • 數組 vs 鏈表
  • JS中的鏈表
  • LeetCode:237.刪除鏈表中的節點
  • LeetCode:206.反轉鏈表
  • LeetCode:2.兩數相加
  • LeetCode:83.刪除排序鏈表中的重復元素
  • LeetCode:141.環形鏈表
  • 前端與鏈表(JS中的原型鏈)
    • 一、instanceof的使用,并用代碼實現
  • 前端鏈表:使用鏈表指針獲取JSON的節點值
  • 總結
  • 思考題

鏈表是什么?

多個元素組成的列表
元素存儲不連續,用next指針連在一起

數組 vs 鏈表

數組:增刪非首尾元素是往往需要移動元素
鏈表:增刪非首尾元素,不需要移動元素,只需要更改next的指向即可

JS中的鏈表

JavaScript中沒有鏈表
可以用Object模擬鏈表

const a = { val: 'a' }; const b = { val: 'b' }; const c = { val: 'c' }; const d = { val: 'd' }; a.next = b; b.next = c; c.next = d;// 遍歷鏈表 let p = a; while (p) {console.log(p.val);p = p.next; }// 插入 const e = { val: 'e' }; c.next = e; e.next = d;// 刪除 c.next = d;

LeetCode:237.刪除鏈表中的節點

解題思路
無法直接獲取被刪除節點的上個節點
將被刪除節點轉移到下個節點
解題步驟
將被刪節點的值改為下個節點的值
刪除下個節點

時間復雜度O(1),空間復雜度O(1)

LeetCode:206.反轉鏈表

輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL

解題思路
反轉兩個節點:將n + 1的next指向n
反轉多個節點:雙指針遍歷鏈表,重復上述操作

解題步驟
雙指針一前一后遍歷鏈表
反轉雙指針

時間復雜度O(n),空間復雜度O(1)

LeetCode:2.兩數相加

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
輸出:7 -> 0 -> 8
原因:342 + 465 = 807

解題思路
小學數學題,模擬相加操作
需要遍歷鏈表

解題步驟
新建一個空鏈表
遍歷被相加的兩個鏈表,模擬相加操作,將個位數追加到新鏈表上,將十位數留到下一位去相加

時間復雜度O(n),空間復雜度O(n)

LeetCode:83.刪除排序鏈表中的重復元素

輸入:1 -> 1 -> 2
輸出:1 -> 2

解題思路
因為鏈表是有序的,所以重復元素一定相鄰
遍歷鏈表,如果發現當前元素和下個元素值相同,就刪除下個元素值

解題步驟
遍歷鏈表,如果發現當前元素和下個元素值相同,就刪除下個元素值
遍歷結束后,返回原鏈表的頭部

時間復雜度O(n),空間復雜度O(1)

LeetCode:141.環形鏈表


解題思路
兩個人在圓形操場上的起點同時起跑,速度快的人一定會超過速度慢的人一圈
用一快一慢兩個指針遍歷鏈表,如果指針能夠相逢,那么鏈表就有圈

解題步驟
用一快一慢兩個指針遍歷鏈表,如果指針能夠相逢,就返回true
遍歷結束后,還沒有相逢就返回false

時間復雜度O(n),空間復雜度O(1)

前端與鏈表(JS中的原型鏈)

原型鏈簡介
原型鏈的本質是鏈表
原型鏈上的節點是各種原型對象,比如Function.prototype、Object.prototype…
原型鏈通過__proto__屬性鏈接各種原型對象
原型鏈長啥樣
obj -> Object.prototype -> null
func -> Function.prototype -> Object.prototype -> null
arr -> Array.prototype -> Object.prototype -> null
原型鏈知識點
如果A沿著原型鏈能找到B的原型對象(B.prototype),那么A instanceof B為true
如果在A對象上沒有找到x屬性,那么會沿著原型鏈找x屬性

const obj = {} const func = () => {} const arr = [] //原型鏈通過__proto__屬性鏈接各種原型對象 console.log(obj .__proto__ === Object.prototype) //true console.log(func.__proto__ === Function.prototype) //true console.log(func.__proto__.__proto__ === Object.prototype) //true console.log(arr.__proto__ === Array.prototype) //true console.log(arr.__proto__.__proto__ === Object.prototype) //true//如果A沿著原型鏈能找到B的原型對象(B.prototype),那么A instanceof B為true console.log(func instanceof Function) //true console.log(func instanceof Object) //true //fuc的proto屬性指向Function的原型對象, //func即是object的實例,也是function的實例//如果在A對象上沒有找到x屬性,那么會沿著原型鏈找x屬性 const obj = {}; Object.prototype.x = 'x' const func = () => {}; Function.prototype.y = 'y' console.log(obj.x) //x console.log(obj.y) //undefined console.log(func.x) //x console.log(func.y) //y

一、instanceof的使用,并用代碼實現

分析
知識點:如果A沿著原型鏈能找到B.prototype,那么A instanceof B為true
解法:遍歷A的原型鏈,如果找到B.prototype,返回true,否則返回false

const instanceOf = (A,B) => {let p = A;while (p) {if (p === B.prototype) {return true;}p = p.__proto__;}return false; }

var foo = {},F = Function(){}; Object.prototype.a = 'value a'; Function.prototype.b = 'value b'console.log(foo.a) console.log(foo.b)console.log(F.a) console.log(F.b)

分析
知識點:如果在A對象上沒有找到x屬性,那么會沿著原型鏈找x屬性
解法:明確foo和F變量的原型鏈,沿著原型鏈找a屬性和b屬性

前端鏈表:使用鏈表指針獲取JSON的節點值

const json = {a: { b: { c: 1 } },d: { e: 2 }, } const path = ['a', 'b' ,'c'] let p =json; path.forEach(k => {p = p[k]; })

總結

鏈表里的元素存儲不是連續的,之間通過next連接
JavaScript中沒有鏈表,但可以用Object模擬鏈表
鏈表常用操作:修改next、遍歷鏈表
JS中的原型鏈也是一個鏈表
使用鏈表指針可以獲取JSON的節點值

思考題

1、編寫一個 instanceOf 方法,可以判斷一個變量是否是另一個變量的實例
2、請判斷一個鏈表是否為回文鏈表。題目鏈接:https://leetcode-cn.com/problems/palindrome-linked-list/

總結

以上是生活随笔為你收集整理的(五)数据结构之“链表”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产大学生av | www.狠狠 | 国产无遮挡免费观看视频网站 | 91免费观看视频在线 | 99国产精品99久久久久久粉嫩 | 伊人春色av | 欧美一a| 超碰人人插 | 污的视频在线观看 | 婷婷久久五月天 | 午夜亚洲视频 | 成人综合影院 | 国产精品2区 | 亚洲综合狠狠 | 韩国一级片在线观看 | 绯色av一区二区三区高清 | 尤物精品| 国产一级黄 | 99久久精品一区二区 | 看黄网站在线观看 | 日韩欧美一区二区三区 | 91直接看 | 欧美视频 | 51ⅴ精品国产91久久久久久 | av鲁丝一区鲁丝二区鲁丝 | 欧美中文字幕在线视频 | 污片免费观看 | av美国| 青青青免费在线视频 | 91精品国产麻豆国产自产在线 | 日本一级淫片色费放 | 青青草原国产 | 国产视频在线看 | 伊人在线| 中文字幕a级片 | 四虎精品影视 | 日韩精品一区二区三区色欲av | 国产精品av一区二区 | 国产精品无码一区二区无人区多人 | 国产农村老头老太视频 | 九九久久国产 | 灌满闺乖女h高h调教尿h | 亚洲精品国产一区二区 | 日本裸体xx少妇18在线 | 色婷婷久久一区二区三区麻豆 | 色欲久久久天天天综合网精品 | 青青草原亚洲 | 午夜成人鲁丝片午夜精品 | 国产毛片一区二区三区 | 无码人妻aⅴ一区二区三区日本 | 一级做a爱片久久 | 中文字幕观看在线 | 成人免费毛片片v | 放荡的少妇2欧美版 | 日批av| h片在线播放 | 粗大的内捧猛烈进出在线视频 | 健身教练巨大粗爽gay视频 | 国产不卡视频一区二区三区 | 精品99999| 国产福利一区二区三区在线观看 | 亚洲国产精品久久久久久久 | 久久涩涩 | 色黄视频网站 | 精品人妻在线播放 | 99久热| 日韩不卡一区二区 | 先锋资源中文字幕 | 懂色av一区二区三区在线播放 | 久久夜色精品国产噜噜亚洲av | 国产极品在线播放 | av大帝| 日韩av手机在线 | 免费黄色片子 | 中文字幕人成乱码熟女香港 | 无码精品一区二区三区在线 | www.爱色av.com | 色无极亚洲 | 69av在线视频 | 天天毛片 | 91福利视频免费观看 | 欧美视频xxxx | 夜夜夜爽 | 69国产精品视频 | 天堂在线精品视频 | 国产在线播放网站 | 久久观看| 天堂在线中文8 | 靠逼视频网站 | 久久国产经典视频 | 已婚少妇美妙人妻系列 | 久久国产精品一区 | 波多野结衣视频免费看 | 制服丝袜在线一区 | 日韩免费一二三区 | 欧美三区在线 | 日韩免费三级 | 四虎视频国产精品免费入口 | 手机看片国产 |