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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

如何复制一个含有随机指针节点的链表

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何复制一个含有随机指针节点的链表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
復制含有隨機指針節點的鏈表

一種特殊的鏈表節點類描述如下:

public class Node {public int value;public Node next;public Node rand;public Node(int data) {this.value = data;} }
Node 類中的 value 是節點值,next 指針和正常單鏈表中 next 指針的意義一樣,都指向下一個節點,rand 指針是 Node
類中新增的指針,這個指針可能指向鏈表中的任意一個節點,也可能指向 null。
給定一個由 Node 節點類型組成的無環單鏈表的頭節點 head,請實現一個函數完成這個鏈表中所有結構的復制,并返
回復制的新鏈表的頭節點。例如:鏈表 1->2->3->null,假設 1 的 rand 指針指向 3,2 的 rand 指針指向 null,3
的 rand 指針指向 1。復制后的鏈表應該也是這種結構,比如,1->2->3->null,1 的 rand 指針指向 3,2 的 rand
指針指向 null,3 的 rand 指針指向 1,最后返回 1。
時間復雜度為 O(N),額外空間復雜度 O(1)


思路:兩種實現辦法,一種是使用額外空間,建立一個哈希表,用于存儲原鏈表節點與對應的新建鏈表節點的對應,方法是首先遍歷一遍原鏈表,可以將新建鏈表每個節點的next指針按照原鏈表的連接順序連接,即哈希表中的對應關系是:1->1',2->2',3->3',1'.next->2'.next->3'.next->null,再遍歷第二次原鏈表,根據原鏈表的rand指針和哈希表中原鏈表與新鏈表每個節點的對應關系,將新鏈表中每個節點的rand指針按照原鏈表中每個節點的rand指向順序連接,即可實現,即1'.rand->3'.rand,2'.rand->null,3'.rand->1'。第二種辦法,將原鏈表的每個節點新建并用原鏈表中每個節點的next指針連接,即1->1'->2->2'->3->3'->null,之后遍歷原鏈表的每個節點的rand指針,即可利用原鏈表的每個節點的next指向新鏈表的拷貝節點,對新鏈表的每個節點的rand指針進行賦值,即可實現。

public static class Node{public int value;public Node next;public Node rand;public Node(int data){this.value = data;} }public static Node copyListWithRand_1(Node head){HashMap<Node, Node> map = new HashMap<Node,Node>();Node cur = head;while(cur != null){map.put(cur, new Node(cur.value));cur = cur.next;}cur = head;while(cur != null){map.get(cur).next = map.get(cur.next);map.get(cur).rand = map.get(cur.rand);cur = cur.next;}return map.get(head); } public static Node copyListWithRand_2(Node head){if(head == null){return null;}Node cur = head;Node next = null;while(cur != null){next = cur.next;cur.next = new Node(cur.value);cur.next.next = next;cur = next;}cur = head;Node curCopy = null;while(cur != null){next = cur.next.next;curCopy = cur.next;curCopy.rand = cur.rand != null ? cur.rand.next : null;cur = next;}Node res = head.next;cur = head;while(cur != null){next = cur.next.next;curCopy = cur.next;cur.next = next;curCopy.next = next != null ? next.next : null;cur = next;}return res; }

總結

以上是生活随笔為你收集整理的如何复制一个含有随机指针节点的链表的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 女人的毛片 | 人人人干 | 亚洲在线电影 | 激情五月婷婷色 | 国产免费又粗又猛又爽 | 麻豆国产尤物av尤物在线观看 | 男生和女生一起差差差很痛的视频 | 无遮挡裸光屁屁打屁股男男 | 国产精品第9页 | juliaannxxxxx高清 黄页网站在线播放 | 欧美黑人性生活 | 午夜精品一区二区三区三上悠亚 | 欧美成人福利视频 | 神马久久春色 | 91在线观看. | 国产尤物视频在线观看 | 国产伦理一区二区 | 色播在线视频 | 91在线国产观看 | 动漫女被黄漫免费视频 | 91av亚洲 | av电影一区二区三区 | 欧美精品1区2区 | 久久久久久久久久久久久国产 | 国产毛茸茸 | 香蕉网站在线观看 | 日本一二三区在线视频 | jlzzjlzz亚洲女人18 | 精品动漫一区二区三区的观看方式 | 女教师高潮黄又色视频 | 波多野结衣一本 | 中国少妇初尝黑人巨大 | 私密视频在线观看 | av十大美巨乳 | 人妻精品一区一区三区蜜桃91 | 国产suv精品一区二区6 | 情欲少妇人妻100篇 黄色一级片欧美 | 色中文在线 | 免费观看国产精品视频 | 亚洲砖区免费 | 九色视频丨porny丨丝袜 | 91在线精品一区二区 | 瑟瑟综合 | 免费黄色一区二区 | 在线天堂中文字幕 | 黄色三级三级三级三级 | 人人爱人人射 | 欧洲精品无码一区二区 | 一级片视频在线观看 | 亚洲夜夜夜 | 国产女人18毛片18精品 | 在线播放网址 | 青草久久久 | 波波野结衣 | 黄色片视频免费观看 | 亚洲天堂aaa| 漂亮人妻洗澡被公强 日日躁 | 手机av在线看 | 葵司有码中文字幕二三区 | 欧美激情偷拍 | 乱亲女h秽乱长久久久 | 美国一级片网站 | 久久综合亚洲色hezyo国产 | 精品毛片在线观看 | 成人午夜网 | 午夜爽爽爽视频 | 国产又粗又猛又爽又黄 | 亚洲精品乱码 | 美日韩成人av| 99er视频| 国产精品日韩在线 | 麻豆最新网址 | 五月精品 | 新x8x8拨牐拨牐永久免费影库 | 成人自拍视频网 | 成人黄色短视频在线观看 | 日本亚洲免费 | 性xxxx另类xxⅹ | 午夜欧美福利 | 成人免费看片在线观看 | 欧美少妇18p | 91九色中文 | 三级在线网站 | 激情小说激情视频 | 一级在线免费观看 | 小视频国产 | av成人资源 | 热热热热色 | 成人午夜视频在线 | 五月婷婷开心网 | 色欲av无码精品一区 | 91精品国产乱码久久 | 上床视频在线观看 | 综合久久激情 | 国产黄在线免费观看 | 亚洲精品视频免费观看 | 天天爱夜夜爱 | 欧美绿帽合集xxxxx | 日韩色影院 |