国产探花免费观看_亚洲丰满少妇自慰呻吟_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; } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南漳县| 辛集市| 准格尔旗| 安塞县| 高安市| 中江县| 泰顺县| 嘉鱼县| 安泽县| 宜兴市| 登封市| 方城县| 兰考县| 吉安市| 于都县| 丰县| 莆田市| 抚州市| 同仁县| 克什克腾旗| 水城县| 阳江市| 福州市| 钟山县| 都匀市| 上饶县| 皮山县| 凉城县| 当阳市| 闻喜县| 樟树市| 兴和县| 巩留县| 济源市| 万州区| 鞍山市| 鞍山市| 巴林左旗| 顺平县| 厦门市| 大港区|