转载请标明出处http://www.cnblogs.com/haozhengfei/p/9e6f4dda3138cf9fab17f996ec85b624.html


链表的K逆序问题

 

 
链表的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
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
运行

 

算法--链表的K逆序问题的更多相关文章

  1. SDUT OJ 数据结构实验之链表二:逆序建立链表

    数据结构实验之链表二:逆序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descr ...

  2. SDUT-2117_数据结构实验之链表二:逆序建立链表

    数据结构实验之链表二:逆序建立链表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 输入整数个数N,再输入N个整数,按照 ...

  3. 数据结构实验之链表二:逆序建立链表(SDUT 2117)

    题目链接 #include <bits/stdc++.h> using namespace std; struct node { int data; struct node *next; ...

  4. POJ 2541 Binary Witch(逆序KMP,好题)

    逆序KMP,真的是强大! 参考链接,下面有题意解释:http://blog.sina.com.cn/s/blog_6ec5c2d00100tphp.htmlhttp://blog.csdn.net/s ...

  5. C语言 · 字串逆序

    算法训练 字串逆序   时间限制:1.0s   内存限制:512.0MB      问题描述 给定一个字符串,将这个串的所有字母逆序后输出. 输入格式 输入包含一个字符串,长度不超过100,字符串中不 ...

  6. [算法] 将单链表的每K个节点之间逆序

    题目 给定一个单链表的头结点,实现一个调整单链表的函数,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点. 解答 使用栈结构 import java.util.Stack; pu ...

  7. 算法总结之 将单链表的每K个节点之间逆序

    给定一个单链表的表头节点head,实现一个调整单链表的函数,是的每k个节点之间逆序,如果最后不够k个节点一组,则不调整最后几个节点 思路: 如果k的值小于2,不调整.k<1 没有意义,k==1代 ...

  8. 单链表的前K个的逆序输出

    单链表逆序输出也是常被面试官问到题算法题,所以自己就总结了一下,在此贴出算法,与小伙伴们相互交流. 首先要有三个指针,前两个分别指向首节点,首节点的下一个节点,第三个是临时指针,是为了储存首节点的下一 ...

  9. 将单链表的每K个节点之间逆序

    [说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“将单链表的每K个节点之间逆序”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说明, ...

随机推荐

  1. JQuery和JS操作LocalStorage/SessionStorage的方法

    LocalStorage 是对Cookie的优化 没有时间限制的数据存储 在隐私模式下不可读取 大小限制在500万字符左右,各个浏览器不一致 在所有同源窗口中都是共享的 本质是在读写文件,数据多的话会 ...

  2. java环境配置教程jde,jre

    控制面板--所有控制面板项--系统--高级系统设置--环境变量 JAVA_HOME = D:\java\jdk CLASSPATH = .;%JAVA_HOME%\lib;%JAVA_HOME%\li ...

  3. python爬取大众点评

    拖了好久的代码 1.首先进入页面确定自己要抓取的数据(我们要抓取的是左侧分类栏-----包括美食.火锅)先爬取第一级分类(美食.婚纱摄影.电影),之后根据第一级链接爬取第二层(火锅).要注意第二级的p ...

  4. iOS学习——iOS 整体框架及类继承框架图

    整理自:IOS 整体框架类图值得收藏 一 整体框架 在iOS开发过程中,对iOS的整理框架的了解和学习是必不可少的一个环节,今天我们就好好来了解一下iOS的整体框架.首先贴一个关于iOS的框架介绍:i ...

  5. fiddler基本介绍

    1.Fiddler如何捕获HTTPS会话 点击Tools->Teleik Fiddler Option,勾选如下选项 点击"Yes" 后,就设置好了 2.fiddler的基本 ...

  6. PHP 微信公众号-创建菜单-配置

    1.服务号 2.基本配置 注意: URL: 确保能访问到你对应的文件 Token:随意设置,但是要与文件里的一致 3.网页授权 注意:填写网站域名 4.更具实际需求创建菜单

  7. git和github新手安装使用教程(三步入门)

    git和github新手安装使用教程(三步入门) 对于新手来说,每次更换设备时,github的安装和配置都会耗费大量时间.主要原因是每次安装时都只关心了[怎么做],而忘记了记住[为什么].本文从操作的 ...

  8. C盘无损扩容

    工具: 分区助手专业版5.5 下载地址:http://pan.baidu.com/s/1slHPGDn 步骤 打开分区助手,点"扩展分区向导". 弹出对话框,因为是扩展C盘所以选& ...

  9. Java学习笔记6(循环和数组练习题)

    1.输出100到1000的水仙花数: public class LoopTest{ public static void main(String[] args){ int bai = 0; int s ...

  10. cyclictest 简介

    1. cyclictest 简介以及安装 1.1 cyclictest 简介 cyclictest 是什么? 看名字应该就能大致猜出来它是一种 test 程序,Cyclictest的维基主页这么介绍它 ...