
一、链表中的经典面试题
1.1. 链表分割
题目要求不能改变原来的数据顺序。定义一个 cur 引用去遍历这个链表,用每个结点的 val 值与 x 进行比较,然后利用尾插的方法把结点插入进两个链表中。先定义 bs、be、as、ae 四个引用来表示两个链表的头尾,在尾插的时候需要注意,利用 ae.next = node; ae = node,记录下尾结点,保证 ae 永远指向最后一个结点,同时 be.next=as,连接上两个链表。
class ListNode {
int val;
ListNode next = null;
public ListNode(int val) { this.val = val; }
}
public class Partition {
public ListNode partition(ListNode pHead, int x){
ListNode bs = null;
ListNode be = null;
ListNode as = null;
ListNode ae = null;
ListNode cur = pHead;
while(cur != null){
if(cur.val < x){
(bs == ){
be = bs = cur;
} {
be.next = cur;
be = cur;
}
}{
(as == ){
ae = as = cur;
} {
ae.next = cur;
ae = cur;
}
}
cur = cur.next;
}
(bs == ){ as; }
be.next = as;
(as != ){ ae.next = ; }
bs;
}
}


