Java連結串列指標確實好煩 - 交換連結串列中連續的兩個節點的位置
Java的指標鞏固練習2.
背景: 交換一個連結串列中,連續的兩個節點的位置。比如:1->2->3->4
返回
2->1->4->3
.
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public static ListNode swapPairs(ListNode head){
if(head == null || head.next == null)return head;
ListNode dummy = new ListNode(0);
ListNode l = head.next;
dummy.next = head;
while(dummy.next != null && dummy.next.next != null){
ListNode first = dummy.next;
ListNode second = dummy.next.next;
first.next = second.next;
second.next = first;
dummy.next = second;
dummy = dummy.next.next;
}
return l;
}
首先我們需要一個多餘的節點來儲存要交換的兩個節點的第一個節點上一級, 然後對著兩個節點進行交換, 再完成兩個節點的交換之後, 我們需要將之前儲存的第一個節點的上一級進行賦值,使其指向交換後的第一個節點,(這個過程很重要,如果缺失了這一過程,那麼我們將丟失連結)。 然後就這個多餘節點賦值為交換之後的第二個節點,也就是為下一次的交換做準備!
相關文章
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- leetcode 24 兩兩交換連結串列中的節點LeetCode
- LeetCode 24. 兩兩交換連結串列中的節點LeetCode
- leetcode 24.兩兩交換連結串列中的節點LeetCode
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- 連結串列面試題(四)---查詢連結串列的中間節點面試題
- 利用快慢指標快速得到連結串列中間節點指標
- 指標和連結串列指標
- 10.13 每日一題 24. 兩兩交換連結串列中的節點每日一題
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- 誰說Java無指標, JAVA連結串列指標也好煩 - Java 指標迴歸Java指標
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 【LeetCode】【連結串列】劍指 Offer 52. 兩個連結串列的第一個公共節點 思路解析和程式碼LeetCode
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- javascript中的連結串列結構—雙向連結串列JavaScript
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- [連結串列]leetcode1019-連結串列中的下一個更大節點LeetCode
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點函式
- (連結串列)連結串列的排序問題排序
- 劍指offer——兩個連結串列的第一個公共結點C++C++
- c 連結串列之 快慢指標 查詢迴圈節點指標
- 有a,b兩個已按學號升序排序的連結串列,每個連結串列中的結點包括學號、成績。要求把兩個連結串列合併,仍按學號升序排列。...排序
- 連結串列以及golang介入式連結串列的實現Golang
- Linux核心連結串列-通用連結串列的實現Linux
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 演算法單連結串列交換任意兩個元素演算法
- 連結串列4: 迴圈連結串列
- golang二級指標操作連結串列Golang指標
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題
- Java兩種方式實現連結串列的刪除,返回頭結點Java
- (轉發)連結串列新增函式中為什麼要用指向連結串列指標的指標(引用傳參)函式指標
- JAVA基礎:語言中連結串列和雙向連結串列的實現(轉)Java
- 連結串列入門與插入連結串列
- 多種方法從尾部移除指定位置的連結串列節點
- 結點插入到單連結串列中
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- [Golang]力扣LeetBook—初級演算法—連結串列—迴文連結串列(快慢指標)Golang力扣演算法指標