题目解析
Given a linked list, swap every two adjacent nodes and return its head.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
Note:
Your algorithm should use only constant extra space.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
分析单向链表 需要知道头结点才能做头结点后的节点数据交换(此case是两节点)。
实际先交换节点1,2 变成2-1-3-4, 此时2节点为结果的头结点,但是后面的节点没处理
然后按照知晓头结点1 处理1-3-4中的3,4 交换, 依次类推处理知道节点后面小于2个节点退出
分析
重要点知晓这几类就思路就明白了
1、单向链表仅有一个头结点
2、单向链表的某个节点操作需要知晓它的previous节点
代码演示:
1 | package com.dylan326.apus; |
代码演示:
代码文件:
A24SwapPairs.java
总结
- 实际单向链表的某个节点操作需要什么条件
- 演变问题1: 每三个交换如何处理
- 演变问题2: 比较常见,原链表空间翻转单向链表
版权声明:本文为博主原创文章,未经允许不得转载。