关闭

【Java】以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于等于x的结点之前

776人阅读 评论(2) 收藏 举报
分类:

编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于等于x的结点之前

可以用两个链表,一个存储小于x的结点,一个存储大于等于x的结点,然后将两个链表合并到一起

import java.util.*;
public class partition {
	public LinkedList Partition(LinkedList node, int x){
		LinkedList beforStart = null;
		LinkedList beforeEnd = null;
		LinkedList afterStart = null;
		LinkedList afterEnd = null;
		
		while(node != null){
			LinkedList next = node.next;
			node.next = null;
			if(node.data < x){
				if(null == beforeStart){
					beforeStart = node;
					beforeEnd = beforeStart;
				}
				else {
					beforeEnd.next = node;
					beforeEnd = node;
				}
			}
			else {
				if (null == afterStart) {
					afterStart = node;
					afterEnd = afterStart;
				}
				else {
					afterEnd.next = node;
					afterEnd = node;
				}
			}
			node = next;
		}
		if (null == beforeStart) return afterStart;
		beforeEnd.next = afterStart;
		return beforeStart;
	}
}
这段代码有什么问题?

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:108454次
    • 积分:2982
    • 等级:
    • 排名:第11728名
    • 原创:180篇
    • 转载:107篇
    • 译文:0篇
    • 评论:10条
    文章分类
    最新评论