public class LinkedList {
@Test
public void test1() {
Node<Character> root = new Node<>('a');
Node<Character> n2 = new Node<>('b');
Node<Character> n3 = new Node<>('c');
root.setNext(n2);
n2.setNext(n3);
n3.setNext(null);
Node<Character> current = root;
while (current != null){
System.out.print(current.getData() + " ");
current = current.getNext();
}
}
@Test
public void test2(){
Link<String> link = new Link<>("");
link.addLast("ClearLove");
link.addLast("Kid");
link.addLast("Uzi");
link.print();
link.add(3, "ZziTai");
link.print();
link.pop(4);
link.print();
System.out.println("第一个结点值是:" + link.get(1));
System.out.println("Kid是第" + link.get("Kid") + "个结点");
}
}
class Node<T>{
private T data;
private Node<T> next;
public Node(T data){
this.data = data;
}
public Node<T> getNext() {
return next;
}
public void setNext(Node<T> next) {
this.next = next;
}
public T getData() {
return data;
}
}
class Link<T>{
private Node<T> root;
private Node<T> rear;
public int length;
public Link(T t){
root = new Node<>(t);
root.setNext(null);
rear = root;
length = 0;
}
void print(){
Node<T> current = root.getNext();
while (current != null){
System.out.print(current.getData() + "->");
current = current.getNext();
}
System.out.println("null");
}
void addLast(T t){
Node<T> n = new Node<>(t);
n.setNext(rear.getNext());
rear.setNext(n);
rear = n;
++length;
}
boolean add(int index, T t){
if (index < 1 || index > length + 1) return false;
Node<T> current = root;
for (int i = 1; i < index; i++)
current = current.getNext();
Node<T> n = new Node<>(t);
n.setNext(current.getNext());
current.setNext(n);
++length;
return true;
}
boolean pop(int index){
if (index < 1 || index > length) return false;
Node<T> current = root;
for (int i = 1; i < index; i++)
current = current.getNext();
current.setNext(current.getNext().getNext());
--length;
return true;
}
T get(int index){
if (index < 1 || index > length){
System.out.println("这个位置没有结点");
System.exit(index);
}
Node<T> current = root;
for (int i = 1; i <= index; i++)
current = current.getNext();
return current.getData();
}
int get(T t){
Node<T> current = root.getNext();
for (int i = 1; i <= length; i++) {
if (current.getData().equals(t))
return i;
current = current.getNext();
}
return -1;
}
}