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;
import java.util.Iterator;
import java.util.function.Consumer;
/**
*
*/
public class SinglyLinkedList {
public class SinglyLinkedList implements Iterable<Integer> {
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 {
int value;
Node next;
@ -16,12 +56,14 @@ public class SinglyLinkedList {
this.next = next;
}
}
public void addFirst(int value) {
//链表为空
// head = new Node(value,null);
//链表非空,包含了链表为空的情况
head = new Node(value,head);
head = new Node(value, head);
}
public void loop(Consumer<Integer> consumer) {
Node p = head;
while (p != null) {
@ -29,8 +71,8 @@ public class SinglyLinkedList {
p = p.next;
}
}
public void loop0 (Consumer<Integer> consumer){
public void loop0(Consumer<Integer> consumer) {
for (Node p = head; p != null; p = p.next) {
consumer.accept(p.value);
}