日韩性视频-久久久蜜桃-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 | 亚洲福利精品 | 久久久久久久久久久免费 | 日韩国产欧美视频 | 999xxxxx| 玖玖爱在线精品视频 | 国产高清一区二区三区四区 | 亚洲高清在线免费观看 | 日本午夜精品理论片a级app发布 | 欧美影院一区二区 | 国产不卡在线观看视频 | 中文字幕――色哟哟 | 国产三区在线观看 | 日韩av不卡在线播放 | 瑟瑟综合网 | 性欧美精品男男 | 亚洲成av人片在www色猫咪 | 亚洲精品一级 | 成人自拍视频网站 | 成年人免费黄色 | 在线免费看黄网站 | 国产九九九九九 | 先锋资源国产 | 污污网站免费 | 久久久青青草 | 好男人www社区在线视频夜恋 | 亚洲国产精品久久精品怡红院 | 久久久久美女 | jizz亚洲女人高潮大叫 | 色哒哒影院| 涩涩网站在线观看 | 日韩aaaaa| 国产成人精品综合久久久久99 | 第一色综合 | 国产欧美精品在线观看 | 国产美女黄网站 | 欧洲金发美女大战黑人 | 拍摄av现场失控高潮数次 | 国产一级不卡毛片 | 99精品偷自拍 | 黄色网址在线免费看 | 亚洲操| 高清国产在线观看 | 中文字幕免费一区二区 | 妹子干综合网 | 亚洲男人天堂视频 | 中文字幕欧美亚洲 | 欧美精品在线一区 | 亚洲成年人av | 少妇又色又爽又高潮极品 | 欧美日韩女优 | 欧美日本韩国一区二区 | 免费视频网站在线观看入口 | 国产精品麻豆一区二区 | 精品视频在线观看一区二区 | 伊人99热 | 成 年 人 黄 色 大 片大 全 | 国产精品无码免费专区午夜 | 香蕉视频在线观看网站 | 日韩无马 | 中文字幕2区 | 野花av| 春草| 国产又黄又猛又粗 | 天堂中文在线播放 | 国产9区 | 国产呦系列 | 欧美一级爽aaaaa大片 | 一本一道无码中文字幕精品热 | 精品久久久无码中文字幕 | 韩国毛片基地 | 黑人一级视频 | 捆绑中国女人hd视频 | xxxxx黄色片 噜噜噜噜噜色 | 国产专区欧美专区 | 天天超碰 | 欧美日本一道 | 天天天天天天天干 | 91毛片在线观看 | 国产成人精品亚洲精品色欲 | 一级片一区二区三区 | 亚洲免费不卡视频 | 亚洲黄色免费网站 | av在线短片 | 国产欧美日韩91 | 欧美一级欧美三级 | 日日干夜夜爽 | 日本三级视频 | 日韩欧美的一区二区 | 国产在线不卡av | 麻豆网站在线免费观看 | 天天插夜夜爽 | 96亚洲精品久久久蜜桃 | 中文字幕永久视频 | 亚洲第一视频 | 黄色大片国产 | 在线观看污| 黄网在线免费 | 二级毛片 |