- Lista enlazada inversa; bucle fijo while
while(head != null){
next = head.next;
head.next = pre;
pre = head;
head = next;
}
- Eliminar un nodo fijo [es necesario determinar si eliminar el nodo principal];
Node preHead = new Node(-1);
preHead.next = head;
pre = ...;
if (head.vaule == ...){
pre.next = pre.next.next;
}
public static Node removeValue(Node head, int num){
while (head != null){
if (head.value != num){
break;
}
head = head.next;
}
Node pre = head;
Node cur = head;
while(cur != null){
if (cur.value == num){
pre.next = cur.next;
} else {
pre = cur;
}
cur = cur.next;
}
}
- Determinar si la lista enlazada individualmente tiene un anillo
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
- Encuentra el nodo intermedio; n1 = n1.next; n2 = n2.next.next; Da un paso y dos pasos
while (slow != fast) {
if (fast == null || fast.next == null) {
return false;
}
slow = slow.next;
fast = fast.next.next;
}
- A veces, se puede usar un nodo principal falso para resolver la posibilidad de que el nodo principal se elimine y cambie
Node fakeNode = new Node(-1);