public class MyLinkedList {
class Node{
// 上一个节点地址
private Node pre;
// 当前节点存储值
private E cur;
// 下一个节点地址
private Node next;
public Node getPre() {
return pre;
}
public void setPre(Node pre) {
this.pre = pre;
}
public E getCur() {
return cur;
}
public void setCur(E cur) {
this.cur = cur;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
// 链表首节点
private Node first;
// 链表尾节点
private Node last;
// 链表的size
private int size = 0;
public int getSize() {
return size;
}
public void add(E e){
// 首先判断首节点是否为空
if(first == null){
Node n = new Node();
// 第一个元素->首节点为空
n.setPre(null);
n.setCur(e);
// 第一个元素->尾节点为空
n.setNext(null);
// 当添加第一个元素时,首节点与尾节点都指向该节点
first = n;
last = n;
}else {
Node n = new Node();
// 非第一个元素时->前一个节点指向链表的尾部
n.setPre(last);
n.setCur(e);
// 非第一个元素->尾节点为空
n.setNext(null);
// 首先将链表最后一个节点的下一个节点指向要添加的节点
last.setNext(n);
// 再将链表的尾节点指向该节点
last = n;
}
// 链表长度 +1
size++;
}
// 通过下标获取元素
public Object getIndex(int index){
Node n = first;
for (int i = 0; i < index; i++) {
n = n.getNext();
}
return n.getCur();
}
public static void main(String[] args) {
MyLinkedList<String> ll = new MyLinkedList<>();
ll.add("11");
ll.add("22");
ll.add("33");
System.out.println(ll.getSize());
System.out.println(ll.getIndex(1));
}
}