首页 > 代码库 > java开始到熟悉103-104

java开始到熟悉103-104

本次内容:linkedlist()

此次是承接上次arraylist(),自己实现linkedlist()(内容较少)

  1 package list;
  2 /**
  3  * 自定义linkedlist类
  4  * @author acer
  5  *
  6  */
  7 public class mylinkedlist {
  8     private Node first;
  9     private Node last;
 10     private int size;
 11     public void add(Object obj)
 12     {
 13         Node n=new Node();
 14         if(first==null)
 15         {
 16             n.setPrevious(null);
 17             n.setObj(obj);
 18             n.setNext(null);
 19             first=n;
 20             last=n;
 21         }
 22         else
 23         {
 24             n.setPrevious(last);
 25             n.setObj(obj);
 26             n.setNext(null);
 27             last.setNext(n);
 28             last=n;
 29         }
 30         size++;
 31     }
 32     public void add(int index,Object obj)
 33     {
 34         Node temp=null;
 35         Node newNode=new Node();
 36         newNode.setObj(obj);
 37         if(first!=null)
 38         {
 39             temp=first;
 40             for(int i=0;i<index;i++)
 41             {
 42                 temp=temp.getNext();
 43             }
 44         }
 45         newNode.setPrevious(temp.getPrevious());
 46         temp.getPrevious().setNext(newNode);
 47         newNode.setNext(temp);
 48         temp.setPrevious(newNode);
 49         size++;
 50         
 51     }
 52     public Object get(int index)
 53     {
 54         rangeCheck(index);
 55         Node temp=null;
 56         if(first!=null)
 57         {
 58             temp=first;
 59             for(int i=0;i<index;i++)
 60             {
 61                 temp=temp.getNext();
 62             }
 63         }
 64         return temp.getObj();
 65     }
 66     public void removefirst()
 67     {
 68         Node temp=null;
 69         temp=first;
 70         temp=temp.getNext();
 71         temp.setPrevious(null);
 72         first.setNext(null);
 73         first=temp;
 74     }
 75     public void remove(int index)
 76     {
 77         rangeCheck(index);
 78         Node temp=null;
 79         if(first!=null)
 80         {
 81             temp=first;
 82             for(int i=0;i<index;i++)
 83             {
 84                 temp=temp.getNext();
 85             }
 86         }
 87         if(temp!=null)
 88         {
 89             Node pre=temp.getPrevious();
 90             Node ne=temp.getNext();
 91             pre.setNext(ne);
 92             ne.setPrevious(pre);
 93             size--;
 94         }
 95         
 96     }
 97     public void rangeCheck(int index)
 98     {
 99         if(index<0||index>=size)
100         {
101             try {
102                 throw new Exception();
103             } catch (Exception e) {
104                 e.printStackTrace();
105             }
106         }
107     }
108     public int size()
109     {
110         return size;
111     }
112     public static void main(String[] args)
113     {
114         mylinkedlist list=new mylinkedlist(); 
115         list.add("aaa");
116         list.add("bbb");
117         list.add("ccc");
118         list.add("ddd");
119         System.out.println(list.size());
120         System.out.println(list.get(1));
121         list.removefirst();
122         System.out.println(list.get(0));
123     }
124 }
125 
126 
127 class Node
128 {
129     private Node previous;
130     private Object obj;
131     private Node next;
132     public Node()
133     {
134     }
135     public Node(Node previous, Object obj, Node next) {
136         super();
137         this.previous = previous;
138         this.obj = obj;
139         this.next = next;
140     }
141     public Node getPrevious() {
142         return previous;
143     }
144     public void setPrevious(Node previous) {
145         this.previous = previous;
146     }
147     public Object getObj() {
148         return obj;
149     }
150     public void setObj(Object obj) {
151         this.obj = obj;
152     }
153     public Node getNext() {
154         return next;
155     }
156     public void setNext(Node next) {
157         this.next = next;
158     }
159 }

运行结果:

4
bbb
bbb