Update SinglyLinkedList.java

master
wangsiyuan 2024-07-11 17:22:58 +08:00
parent 042fbd164a
commit dfda3d7f08
1 changed files with 46 additions and 4 deletions

View File

@ -1,12 +1,52 @@
package com.nbee.solution.practice; package com.nbee.solution.practice;
import java.util.Iterator;
import java.util.function.Consumer; import java.util.function.Consumer;
/** /**
* *
*/ */
public class SinglyLinkedList { public class SinglyLinkedList implements Iterable<Integer> {
private Node head; private Node head;
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
Node p = head;
@Override
public boolean hasNext() {
return p != null;
}
@Override
public Integer next() {
int value = p.value;
p = p.next;
return value;
}
};
}
private Node findLast() {
if (head == null) {
return null;
}
Node p;
for (p = head; p != null; p = p.next) {
}
return p;
}
public void addLast(int value) {
Node last = findLast();
if (last == null){
addFirst(value);
return;
}
last.next = new Node(value, null);
}
private static class Node { private static class Node {
int value; int value;
Node next; Node next;
@ -16,12 +56,14 @@ public class SinglyLinkedList {
this.next = next; this.next = next;
} }
} }
public void addFirst(int value) { public void addFirst(int value) {
//链表为空 //链表为空
// head = new Node(value,null); // head = new Node(value,null);
//链表非空,包含了链表为空的情况 //链表非空,包含了链表为空的情况
head = new Node(value, head); head = new Node(value, head);
} }
public void loop(Consumer<Integer> consumer) { public void loop(Consumer<Integer> consumer) {
Node p = head; Node p = head;
while (p != null) { while (p != null) {