java LinkedList 底层详细
package cn.com.test04; class MylinkedList<T>{ private Node head;// 头节点 private int size=0;// 记录元素个数 private Node aa;//相当于一个指针 public void add(T o){ Node en = new Node(o,null); if(head==null){ aa=head=en; }else{ aa.next=en; aa=en; } size++; } public void addFirst(T o){ add(0,o); } public void add(int index,T o){ Node en = new Node(o,null); if(index==0){ en.next=head; head=en; }else{ Node sNode = getNode(index-1); en.next=sNode.next; sNode.next=en; } size++; } public void remove(int index){ if(index==0){ head=head.next; }else{ Node sNode = getNode(index-1); sNode.next=sNode.next.next; } size--; } private Node getNode(int index){ int i=0; Node dd=head; while (dd!=null) { if(index==i){ return dd; } dd=dd.next; i++; } return null; } public T get(int index){ return (T)getNode(index).element; } public int size(){ return size; } class Node<T>{ T element; Node next; Node(T element, Node next) { this.element = element; this.next = next; } } } public class t04 { public static void main(String[] args) { MylinkedList<String> l= new MylinkedList<String>();// 内部是节点实现 指定位置增加 删除 效率较高 修改 查询 效率较慢 l.add("aa");l.add("bb");l.add("cc"); l.add(1,"dd");l.remove(1); for(int i=0;i<l.size();i++){ System.out.println(l.get(i)); } } }