链表合并
public static Node merge(Node head1, Node head2) {
if (head1 == null) {
retturn head2;
}
if (head2 == null) {
return head1;
}
Node head3 = null;
if (head1.data < head2.data) {
head3 = head1;
head3.next = merge(head1.next, head2);
} else {
head3 = head2;
head3.next = merge(head1, head2.next);
}
return head3;
}
判断带环
public static boolean hasCycle(Node head) {
if (head == null) {
return false;
}
Node fast = head;
Node slow = head;
while (slow != null) {
fast = fast.next;
slow = slow.next.next;
if (first == second) {
return true;
}
}
return false;
}
链表反转
public static Node reverse(Node head) {
if (haed == null || head.next == null) {
return head;
}
Node cur = head.next;
Node pre = head;
Node temp = null;
while (cur != null) {
temp = cur.next;//保存下一个节点
cur.next = pre;//反转指向
//向后遍历
pre = cur;
cur = temp;
}
head.next = null;
return pre;
}