Java链表分割_java中有没有写好的单链表

Java链表分割_java中有没有写好的单链表描述:现有一链表的头指针ListNode*pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。/*publicclassListNode{intval;ListNodenext=null;ListNode(intval){this.val=val;}}*/publicclassPartition{publicListNo

大家好,又见面了,我是你们的朋友全栈君。

描述:
现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/
public class Partition { 
   
    public ListNode partition(ListNode pHead, int x) { 
   
        // write code here
        if(pHead == null || pHead.next == null){ 
   
            return pHead;
        }
        
        //newHead的指针
        ListNode newHead = new ListNode(-1);
        ListNode tmp = newHead;
        //pHead的指针
        ListNode preCur = pHead;
        ListNode cur = preCur.next;
        //把小于x的节点放进newHead链表里
        //其余结点不动
        while(cur != null){ 
   
            if(cur.val < x){ 
   
                preCur.next = cur.next;
                tmp.next = cur;
                tmp = tmp.next;
                cur = preCur.next;
            }else{ 
   
                preCur = preCur.next;
                cur = preCur.next;
            }
        }
        //判断头节点并拼接链表newHead -> pHead
        if(pHead.val < x){ 
   
            cur = pHead;
            pHead = pHead.next;
            cur.next = newHead.next;
            tmp.next = pHead;
            return cur;
        }else{ 
   
            tmp.next = pHead;
            return newHead.next;//删除pHead中的头节点
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135328.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle insert优化「建议收藏」

    oracle insert优化「建议收藏」author:skatetime:2010/10/19insert优化要想提高insert的速度,首先要知道什么影响insert慢,在执行insert的过程中产生redo和undo,要想提高insert的速度,在充分利用系统资源的条件下就要尽量减少insert

    2022年7月25日
    28
  • VMware选择VMnet8模式连接外网的方法

    VMware选择VMnet8模式连接外网的方法介绍VMware连接外网的方法,解决虚拟机不能连网的问题。

    2022年6月3日
    78
  • linux中的sleep函数和delay函数

    linux中的sleep函数和delay函数对于做过单片机程序的朋友来说,delay是很常见的函数,通常就是while或者for循环,进行空指令的执行,由于单片机的晶振固定,一个机器周期的时间是固定的,执行多少个空指令,就可以完成多少个机器周期时长的延时。其实在linux中的delay函数,道理是一样的,都是通过cpu执行空指令来达到延时的目的,但是对于操作系统这种多线程进行的方式来说,在需要延时的时候,可以通过将进程挂起的方式来实现延时。这就是sleep函数。sleep和delay的区别最明显也最重要的区别就是,在执行delay的时候,是执行

    2022年5月18日
    39
  • php解析xml,并将xml转换为层级数组

    php解析xml,并将xml转换为层级数组

    2021年9月12日
    62
  • dom4j java对象_dom4j解析XML成对象

    dom4j java对象_dom4j解析XML成对象最近不太忙,发现现在服务之间的交互都是通过xml进行的,所以今天理了一下xml的两种解析方式。首先是最流行的dom4j解析。先解析,然后通过反射转成对象。用到的jar:dom4j-1.6.1.jarjaxen-1.1.1.jar1.xml字符串转成对象:class=”java”name=”code”>/***解析XMl字符串数据,转化成对象,并返回*@paramxmlxml字符串…

    2022年6月21日
    27
  • Android Sdk安装和环境变量配置[通俗易懂]

    Android Sdk安装和环境变量配置[通俗易懂]AndroidSdk安装 AndroidSdk环境变量配置 参考:https://blog.csdn.net/qq_21454973/article/details/80429545一:AndroidSdk安装下载AndroidSDK(SoftwareDevelopmentKit)GoogleAndroid的官网上下载(http://developer.an…

    2022年7月21日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号