Sort List
Java代码:
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode sortList(ListNode head) {
ListNode node_index = new ListNode(0);
ListNode node_tmp = new ListNode(0);
ListNode node_tmp_2 = new ListNode(0);
ListNode node_tmp_2_pre = new ListNode(0);
if (head == null)
return null;
node_index = head;
if (head.next == null)
return head;
node_tmp = node_index.next;
head = head;
while (node_index.next != null) {
if (node_tmp.val >= node_index.val) {
node_index = node_tmp;
node_tmp = node_tmp.next;
continue;
} else {
node_tmp_2 = head;
if (node_tmp.next != null) {
node_index.next = node_tmp.next;
} else {
node_index.next = null;
}
while (node_tmp_2 != null)
if (node_tmp.val >= node_tmp_2.val) {
node_tmp_2 = node_tmp_2.next;
} else {
if (node_tmp_2.equals(head)) {
node_tmp.next = node_tmp_2;
head = node_tmp;
node_tmp =node_index.next;
break;
} else {
if (node_tmp_2.equals(head.next)) {
node_tmp_2_pre = head;
}
node_tmp.next = node_tmp_2;
node_tmp_2_pre.next = node_tmp;
node_tmp = node_index.next;
break;
}
}
}
}
return head;
}
}
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode sortList(ListNode head) {
ListNode node_index = new ListNode(0);
ListNode node_tmp = new ListNode(0);
ListNode node_tmp_2 = new ListNode(0);
ListNode node_tmp_2_pre = new ListNode(0);
if (head == null)
return null;
node_index = head;
if (head.next == null)
return head;
node_tmp = node_index.next;
head = head;
while (node_index.next != null) {
if (node_tmp.val >= node_index.val) {
node_index = node_tmp;
node_tmp = node_tmp.next;
continue;
} else {
node_tmp_2 = head;
if (node_tmp.next != null) {
node_index.next = node_tmp.next;
} else {
node_index.next = null;
}
while (node_tmp_2 != null)
if (node_tmp.val >= node_tmp_2.val) {
node_tmp_2 = node_tmp_2.next;
} else {
if (node_tmp_2.equals(head)) {
node_tmp.next = node_tmp_2;
head = node_tmp;
node_tmp =node_index.next;
break;
} else {
if (node_tmp_2.equals(head.next)) {
node_tmp_2_pre = head;
}
node_tmp.next = node_tmp_2;
node_tmp_2_pre.next = node_tmp;
node_tmp = node_index.next;
break;
}
}
}
}
return head;
}
}