1 25 26 package org.nemesis.forum.util; 27 28 29 39 public class LinkedList { 40 41 45 private LinkedListNode head = new LinkedListNode("head", null, null); 46 47 50 public LinkedList() { 51 head.next = head.previous = head; 52 } 53 54 59 public LinkedListNode getFirst() { 60 LinkedListNode node = head.next; 61 if (node == head) { 62 return null; 63 } 64 return node; 65 } 66 67 72 public LinkedListNode getLast() { 73 LinkedListNode node = head.previous; 74 if (node == head) { 75 return null; 76 } 77 return node; 78 } 79 80 85 public LinkedListNode addFirst(LinkedListNode node) { 86 node.next = head.next; 87 node.previous = head; 88 node.previous.next = node; 89 node.next.previous = node; 90 return node; 91 } 92 93 100 public LinkedListNode addFirst(Object object) { 101 LinkedListNode node = new LinkedListNode(object, head.next, head); 102 node.previous.next = node; 103 node.next.previous = node; 104 return node; 105 } 106 107 114 public LinkedListNode addLast(Object object) { 115 LinkedListNode node = new LinkedListNode(object, head, head.previous); 116 node.previous.next = node; 117 node.next.previous = node; 118 return node; 119 } 120 121 124 public void clear() { 125 LinkedListNode node = getLast(); 127 while (node != null) { 128 node.remove(); 129 node = getLast(); 130 } 131 132 head.next = head.previous = head; 134 } 135 136 142 public String toString() { 143 LinkedListNode node = head.next; 144 StringBuffer buf = new StringBuffer (); 145 while (node != head) { 146 buf.append(node.toString()).append(", "); 147 node = node.next; 148 } 149 return buf.toString(); 150 } 151 } 152 | Popular Tags |