Compare commits
2 Commits
042fbd164a
...
bd860423c4
| Author | SHA1 | Date |
|---|---|---|
|
|
bd860423c4 | |
|
|
dfda3d7f08 |
|
|
@ -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) {
|
||||||
|
|
@ -29,8 +71,8 @@ public class SinglyLinkedList {
|
||||||
p = p.next;
|
p = p.next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loop0 (Consumer<Integer> consumer){
|
public void loop0(Consumer<Integer> consumer) {
|
||||||
for (Node p = head; p != null; p = p.next) {
|
for (Node p = head; p != null; p = p.next) {
|
||||||
consumer.accept(p.value);
|
consumer.accept(p.value);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,4 +12,14 @@ public class SinglyLinkedListTest {
|
||||||
list.addFirst(6);
|
list.addFirst(6);
|
||||||
list.loop0(i -> System.out.println(i + " "));
|
list.loop0(i -> System.out.println(i + " "));
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
public void singlyLinkedListIteratorTest(){
|
||||||
|
list.addFirst(1);
|
||||||
|
list.addFirst(3);
|
||||||
|
list.addFirst(5);
|
||||||
|
list.addFirst(6);
|
||||||
|
for (Integer value: list) {
|
||||||
|
System.out.println(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue