交换链表当中两个节点c语言,leetcode_24. 两两交换链表中的节点

本文将要为您介绍的是leetcode_24. 两两交换链表中的节点,教程操作方法:leetcode_24. 两两交换链表中的节点

24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

解题:

public class ListNode {

int val;

ListNode next;

ListNode(int x) {

val = x;

}

}

class Solution {

public ListNode swapPairs(ListNode head) {

// 递归

// if (head == null || head.next == null) {

// return head;

// }

// ListNode next = head.next;

// head.next = swapPairs(next.next);

// next.next = head;

// return next;

// 非递归

ListNode pre = new ListNode(0);

pre.next = head;

ListNode temp = pre;

while(temp.next != null && temp.next.next != null) {

//1

ListNodestart=tmp.next;

//2

ListNodeend=tmp.next.next;

//0->2

tmp.next=end;

//1>3>4

start.next=end.next;

//2>1>3>4

end.next=start;

//1>3>4

tmp=start;

}

return pre.next;

//

// 作者:guanpengchn

// 链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/solution/hua-jie-suan-fa-24-liang-liang-jiao-huan-lian-biao/

// 来源:力扣(LeetCode)

// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

}

public static void main(String[] args) {

ListNode node1 = new ListNode(1);

ListNode node2 = new ListNode(2);

ListNode node3 = new ListNode(3);

ListNode node4 = new ListNode(4);

node1.next = node2;

node2.next = node3;

node3.next = node4;

ListNode listNode = new Solution().swapPairs(node1);

while (listNode!=null){

System.out.print(listNode.val+" -> ");

listNode=listNode.next;

}

}

}

参考:图解算法leetcode_24. 两两交换链表中的节点就为您介绍到这里,感谢您关注懒咪学编程c.lanmit.com.

本文地址:https://c.lanmit.com/bianchengkaifa/Java/106037.html

你可能感兴趣的:(交换链表当中两个节点c语言)