单链表如何实现重新排序
重新定义两个链表,分别定义两个节点(start1,end1),(start2,end2) 表示小于 和大于等于x的节点;
这里采用尾插法对 cur.data<x 的节点在 1或2 链表中继续存放
最后:通过end1.next = start2; 将两个排序后链表进行组合;并返回一个start1;
同时记得将 end2.next=null;否则链表将无限循环下去;
上代码:
/**
* 链表的分割 ,选定一个X=node.data 作为基准,小于x的按照顺序排列,大于x的按照顺序排列,然后总的再一排列;
*/
public Node fenge(int x) {
Node head1 = null, end1 = null;
Node head2= null, end2 = null;
Node cur = this.head;
while(cur!=null){
if (cur.data<x){
if (head1==null){
head1 = cur;
end1=head1;
cur = cur.next;
}else{
end1.next= cur;
end1 =