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));
}
}
}