package org.learning.container; public class LinkedList { private Node element = new Node(null,null,null); public LinkedList(){ this.element.next = (this.element.prev = this.element); } public Node getElement() { return element; } public void setElement(Node element) { this.element = element; } private int index = 0; public void add(Object obj){ add(obj,this.element); } public Node add(Object obj,Node node){ // ���ڵ�(�ڵ�������obj)��ӵ���ͷ(element)֮ǰ // �������ڵ���ӵ�˫�������ĩ�� Node childNode = new Node(obj,node,node.prev); childNode.prev.next = childNode; childNode.next.prev = childNode; index += 1; return childNode; } /*public void add(int index,Object obj){ for(int i=0;i<size();i++){ if(i == index){ add(obj); } } }*/ public void addFirst(Object obj){ //add(0,obj); add(obj,this.element.next); } public Object getFirst(){ return element.next.obj; } public void addLast(Object obj){ //add(size(),obj); add(obj,this.element); } public Object getLast(){ return element.prev.obj; } public Node get(int index){ Node obj = null; for(int i=0;i<size();i++){ if(i == index) obj = element.next; } return obj; } public int size(){ return this.index ; } public Object remove(Node node){ Object e = node.obj; node.prev.next = node.next; node.next.prev = node.prev; node.prev = node.next = null; node.obj = null; index -=1; return e; } public void removeFirst(){ remove(this.element.next); } public void removeLast(){ remove(this.element.prev); } class Node{ Object obj ; //������� Node prev ; //�����һ������ Node next ; //�����һ������ public Node(Object obj,Node next,Node prev){ this.obj = obj; this.next = next; this.prev = prev; } } public static void main(String [] args){ /*Object [] objs = new Object[3]; Object [] c0 = new Object[2]; c0[0] = "c0"; Object [] c1 = new Object[2]; c1[0] = "c1"; Object [] c2 = new Object[2]; c2[0] = "c2"; c0[1] = c1; c1[1] = c2; c2[1] = null; objs[2] = c2; objs[1] = c1; objs[0] = c0; for(int i=0;i<objs.length;i++){ System.out.println("i="+i); System.out.println(((Object[])objs[i])[0]); if((Object[])((Object[])objs[i])[1] == null){ continue; } Object[] obj = (Object[])((Object[])objs[i])[1]; System.out.println(obj[0]); System.out.println(obj[1]); }*/ LinkedList list = new LinkedList(); list.add("test0"); list.add("test1"); list.add("test2"); list.addFirst("first"); list.addLast("last"); System.out.println(list); System.out.println("list.getFirst()"+list.getFirst()); System.out.println("list.getLast()"+list.getLast()); for(int i=0;i<list.size();i++){ Node tmp = list.get(i); print(tmp.obj); } System.out.println("----------------------------------------"); java.util.LinkedList linkedList = new java.util.LinkedList(); linkedList.add("object"); linkedList.addFirst("first"); //linkedList.addLast("last"); for(Object obj : linkedList){ print(obj); } print("--------------------��Ӻ����--------------------------------------"); print("-----------------ɾ��first��last---------------------------------------"); linkedList.removeFirst(); linkedList.removeLast(); for(Object obj : linkedList){ print(obj); } } public static void print(Object obj){ System.out.println(""+obj); } }