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中的头节点
        }
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 操作系统 进程调度算法_进程调度算法实验报告

    操作系统 进程调度算法_进程调度算法实验报告进程调度算法一、先来先服务(FCFS)基本思想:先到达的进程先进入就绪队列,先进行调度的原则。非抢占方式。二、短作业优先(SJF)基本思想:根据进程中的执行时间,选取执行时间最短的作业优先调度;可有抢占或非抢占方式。三、优先权高者优先(HPF)基本思想:系统根据作业的优先权进行作业调度,每次选取优先权高的作业优先调度。作业的优先权通常用一个整数表示,也叫做优先数。可有抢占或非抢占方式。…

  • Springboot自动装配原理_自动装配原理

    Springboot自动装配原理_自动装配原理springboot自动装配原理详解1)传统ssm整合redis的时候需要在xml的配置文件中进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,只是通过xml的形式来整合redis第一步:加入配置<dependency><groupId>org.springframework.data</grou…

  • 多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步

    多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来显现线程同步

  • 曾國藩家書摘_曾国藩语录及诠释

    曾國藩家書摘_曾国藩语录及诠释人物简介曾国藩(1811年11月26日-1872年3月12日),中国近代政治家、军事家、理学家、文学家,与胡林翼并称曾胡。曾国藩与李鸿章、左宗棠、张之洞并称“晚清四大名臣”,官至武英殿大学士、两江总督,同治年间封一等毅勇侯,谥文正。人物评价知人之明,谋国之忠,自愧不如元辅;同心若金,功错若石,相期无负平生。-左宗棠吾师道德功业,固不待言,即文章学问,亦卓…

  • Webserver推送技术

    Webserver推送技术

  • jdbc和数据库连接池_数据库连接池满了

    jdbc和数据库连接池_数据库连接池满了数据库连接池JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按照以下步骤:在主程序(如servlet beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,再验证用户名和密码(大概花费0.05s-1s),需要数据库连接的时候,就向数据库要求一个,执行完成后再断开。这样的方式将会消耗大量的时间。数据库的

发表回复

您的电子邮箱地址不会被公开。

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