国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

重排鏈表

2019-11-08 02:18:17
字體:
來源:轉載
供稿:網友

給定一個單鏈表L: L0→L1→…→Ln-1→Ln, 重新排列后為:L0→Ln→L1→Ln-1→L2→Ln-2→… 必須在不改變節點值的情況下進行原地操作。

解決的方法很簡單,用快慢針或者計數的辦法找出中點,然后將鏈表分成前后兩塊,后面的按規律插入前面的就行了 這里記錄一下單鏈表逆序的方法 我們用迭代的方法來逆序一個單鏈表,要經過如圖片描述的迭代 偽代碼描述

head->next = PRev;prev = head;head = next;next = head->next;

初始 第一次迭代

/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val; * this.next = null; * } * } */ public class Solution { /** * @param head: The head of linked list. * @return: void */ public void reorderList(ListNode head) { // write your code here if(head == null || head.next == null) return; //快慢針,找中間結點 ListNode p = head; ListNode q = head.next; while(q != null && q.next != null){ p = p.next; q = q.next.next; } //中間節點 q = p.next; p.next = null; //將后半段逆序 ListNode rHead = null; while(q != null) { ListNode r = q.next; q.next = rHead; rHead = q; q = r; } //向前半段插入 q = rHead; p = head; while(p != null && q != null) { ListNode rr = q.next; ListNode lr = p.next; q.next = lr; p.next = q; q = rr; p = lr; } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵州省| 梁平县| 泽普县| 昭通市| 中阳县| 滨州市| 安多县| 莱阳市| 得荣县| 尖扎县| 夹江县| 马龙县| 日喀则市| 论坛| 专栏| 大竹县| 阜新市| 红河县| 金华市| 林口县| 双流县| 赣州市| 日土县| 盐池县| 化德县| 大洼县| 永和县| 依安县| 遂昌县| 岫岩| 尉犁县| 舟曲县| 基隆市| 开化县| 汉源县| 吴旗县| 吴旗县| 八宿县| 万载县| 集安市| 临夏县|