package com.java.gsl; public class LinkedList implements List { private Node head; private int size = 0; public void add(Object o){ } public void add(int index , Object o){ if(index < 0 || index > size ){ return; } Node node = (Node) (index==size ? head : get(index)); Node prenode = node.pre; // Node l = last; // Node newNode = new Node(l, o, null); // last = newNode; // if (l == null) // head = newNode; // else // l.next = newNode; // size++; } public Object get(int index){ if (index < 0 || index >= size){ System.out.println("错误"); return null; } // 获取index处的节点。 // 若index < 双向链表长度的1/2,则从前先后查找; // 否则,从后向前查找。 if (index < (size/2 )) { for (int i = 0; i <= index; i++) head = head.next; } else { for (int i = size; i > index; i--) head = head.pre; } return head; } public Object remove(int index){ Node x = (Node) get(index); Node next = x.next; Node prev = x.pre; if (prev == null) { head = next; } else { prev.next = next; x.pre = null; } if (next == null) { x.last = prev; } else { next.pre = prev; x.next = null; } size--; return get(index); } public int size(){ return -1; } public void addFirst(Object o){ } public void addLast(Object o){ } public Object removeFirst(){ return null; } public Object removeLast(){ return null; } public Iterator iterator(){ return null; } private static class Node{ Object data; Node next; Node pre; Node last; } }