算法--链表的K逆序问题
2017-03-22 21:12
211 查看
转载请标明出处http://www.cnblogs.com/haozhengfei/p/9e6f4dda3138cf9fab17f996ec85b624.html
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211132580-966967183.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133143-1796851038.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133424-1033768696.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133674-322853806.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133971-1712277290.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211134346-196788905.jpg)
链表的k逆序
给定一个单链表的头指针head,同时给定K值,返回逆序后的链表的头指针。
Java (javac 1.7)
代码自动补全
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
运行
链表的K逆序问题
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211132580-966967183.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133143-1796851038.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133424-1033768696.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133674-322853806.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211133971-1712277290.jpg)
![](https://images2015.cnblogs.com/blog/1008304/201703/1008304-20170322211134346-196788905.jpg)
链表的k逆序
第7节 链表的k逆序练习题
有一个单链表,请设计一个算法,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。例如链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6->5->4->7->8->null。因为K==3,所以每三个节点之间逆序,但其中的7,8不调整,因为只有两个节点不够一组。给定一个单链表的头指针head,同时给定K值,返回逆序后的链表的头指针。
Java (javac 1.7)
代码自动补全
1
import java.util.*;
2
3
/*
4
public class ListNode {
5
int val;
6
ListNode next = null;
7
8
ListNode(int val) {
9
this.val = val;
10
}
11
}*/
12
public class KInverse {
13
public ListNode inverse(ListNode head, int k) {
14
if (k < 2) {
15
return head;
16
}
17
ListNode cur = head;//正在遍历的当前节点
18
ListNode start = null;
19
ListNode pre = null;
20
ListNode next = null;//待遍历的下一个节点
21
int count = 1;
22
while (cur != null) {
23
next = cur.next;
24
if (count == k) {//count满足要求开始进行逆序
25
start = pre == null ? head : pre.next;
26
head = pre == null ? cur : head;
27
resign(pre, start, cur, next);
28
pre = start;
29
count = 0;
30
}
31
count++;
32
cur = next;
33
}
34
return head;
35
}
36
public void resign(ListNode left, ListNode start, ListNode end,
37
ListNode right) {
38
ListNode pre = start;
39
ListNode cur = start.next;
40
ListNode next = null;
41
while (cur != right) {
42
next = cur.next;
43
cur.next = pre;
44
pre = cur;
45
cur = next;
46
}
47
if (left != null) {
48
left.next = end;
49
}
50
start.next = right;
51
}
52
}
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
运行
相关文章推荐
- 基本算法—链表逆序
- 算法大全(1)单链表 http://rrurl.cn/f1Re2j 本文所有13道算法题目,覆盖了基本上所有常见的单链表问题
- 「算法导论」:思考题2-4,逆序对问题
- 算法与数据结构面试题(7)-链表“香蕉”问题
- [算法]链表的逆序遍历节点
- C/C++面试之算法系列--典型的几个链表操作-逆序和重排
- 算法问题总结-链表相关
- 链表问题,逆序打印链表,改变链表指向方向
- 算法学习十四----逆序输出链表
- iOS 单链表算法的一些问题
- 算法导论 逆序对问题
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理
- 简单算法 - 链表逆序思路详解
- 经典算法问题:“this is a test” 逆序输出为“test a is this”.使用Python实现
- 算法学习笔记之四:巧妙运用指针解决链表、字符串、数组等问题(同向双指针VS对向双指针)
- 算法题18 逆序(字符串、整数、单向链表)
- 每天一算法(链表逆序,子字符串等几个一起)
- 有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,
- 链表的逆序问题
- 【算法之链表(四)】在不使用额外节点存储空间的情况下,实现单链表逆序