package data_structure;
public class Node <T> {
private Node <T> next;
private T value;
public Node(){}
public Node(T value, Node <T> next){
this.next = next;
this.value = value;
}
public Node <T> getNext(){
return this.next;
}
public T getValue(){
return this.value;
}
public boolean setNext(Node <T> next){
try {
this.next = next;
}
catch (Exception e){
return false;
}
return true;
}
public boolean setValue(T value){
try {
this.value = value;
}
catch (Exception e){
return false;
}
return true;
}
@Override
public String toString() {
return "" + this.value;
}
}
package data_structure;
public class LinkedList <T> {
public Node <T> head = new Node<>();
public int length = 1;
public LinkedList(T value){
this.head.setValue(value);
}
public boolean add(T value){
try {
Node <T> tmpNext = new Node <T> (value, null);
tmpNext.setNext(this.head);
this.head = tmpNext;
this.length += 1;
}
catch (Exception e){
return false;
}
return true;
}
public boolean remove(){
try {
Node <T> tmpHead = this.head.getNext();
this.head.setNext(null);
this.head = tmpHead;
this.length -= 1;
}
catch (Exception e){
return false;
}
return true;
}
public Node <T> getNext(){
this.head = this.head.getNext();
return this.head;
}
public boolean isEmpty(){
return this.length == 0;
}
@Override
public String toString() {
return this.head.getValue() + "";
}
public int size(){
return this.length;
}
}
因为遍历一遍头节点就到尾部了,不能再次遍历,可以添加reset方法,另设个变量存储最开始头节点位置。
不过我懒得写了。。