单链表相邻两个节点之间交换顺序
来源:互联网 发布:mac 远程控制 windows 编辑:程序博客网 时间:2024/05/16 17:43
思路
- 代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode swapPairs(ListNode head) { if (head == null || head.next == null) return head; ListNode pre = head; ListNode tail = new ListNode(0); head = head.next; ListNode curr = pre != null ? (pre.next != null ? pre.next : null) : null; while (curr != null) { tail.next = curr; ListNode temp = curr.next; curr.next = pre; tail = pre; pre.next = temp; pre = temp; curr = pre != null ? (pre.next != null ? pre.next : null) : null; } return head; }}
- 与逆序的实现有一定的相似性,但是又相对复杂
- 两两看成一组, 若只有奇数个,则后面一个可以看成是一个空节点
- 两个节点中的后一个节点指向前一个节点,前一个节点指向后一组节点的第一个节点,构成的新列表进行下一次的变换操作
- tail指针指的是奇数节点,实现的功能是将前一组的后一个节点指向后一组的第二个节点
应该还有更好的方法去解决这个问题,后续更新
0 0
- 单链表相邻两个节点之间交换顺序
- leetcode交换相邻的两个节点的值
- 交换链表相邻节点
- 只调整指针来交换两个相邻的元素【单链表】
- 24. Swap Nodes in Pairs(每两个相邻节点进行一次交换)
- 给定一个链表,交换每两个相邻节点并返回其头部。
- 单链表交换相邻元素
- 交换链表中的相邻节点
- 交换单向链表的相邻节点
- 交换链表中相邻节点的位置
- 交换单链表的任意两个节点
- 交换链表中两个节点
- 交换单链表中相邻的两个点(人搜)
- Java单链表基本操作(九)--交换相邻节点对的值
- 两个相邻时间之间的差值计算
- 相邻交换
- Swap Nodes in Pairs 链表交换相邻的节点
- Swap Nodes in Pairs 交换LinkList的相邻节点
- 猴子吃桃-经典问题
- 操作系统概念性题目总结
- 享元模式(Flyweight)
- 结构体实验
- Codeforces Round #180 (Div. 2) B. Sail 【模拟】
- 单链表相邻两个节点之间交换顺序
- android如何查找控件属性名称
- 兔子产子
- leetcode(67).237. Delete Node in a Linked List
- 命令格式和常见权限
- VS2010配置opengl
- poj2253 Frogger(各种图论基础算法都能搞)&&poj1797 Heavy Transportation
- QT Creator 图文详细安装部署教程(含三种方式)
- 性能分析工具之-- Eclipse Memory Analyzer tool(MAT)(一)