1.队列的判空判满条件以及当插入和删除元素时的各种可能性;
比如last元素在末位置,而first元素并不在初始位置;
又比如,last 元素不在末位置,first元素也不再初始位置等等。
2.队列的数组元素
1 package sequence_queue; 2 3 public class sequence_Queue { 4 private int first, last, size; 5 private Object[] storage; 6 public sequence_Queue(){ 7 this(100); 8 } 9 public sequence_Queue(int n){ 10 size = n; 11 storage = new Object[size]; 12 first = last = -1; 13 } 14 public boolean isFull(){ 15 return first == 0 && last == size - 1 || first == last + 1; 16 } 17 public boolean isEmpty(){ 18 return first == -1; 19 } 20 public void enqueue(Object e1){ 21 if(last == size -1 || last == -1){ 22 storage[0] = e1; 23 last = 0; 24 if(first == -1) 25 first = 0; 26 } 27 else storage[++last] = e1; 28 } 29 public Object dequeue(){ 30 Object tmp = storage[first]; 31 if(first == last) 32 last = first = -1; 33 else if(first == size - 1) 34 first = 0; 35 else first++; 36 return tmp; 37 } 38 public void printAll(){ 39 for(int i = 0; i < size; i++) 40 System.out.print(storage[i] + " "); 41 } 42 }
3.队列的链式实现
1 package linklist_queue; 2 3 public class LinkList_Queue { 4 private java.util.LinkedList list = new java.util.LinkedList(); 5 public void clear(){ 6 list.clear(); 7 } 8 public boolean isEmpty(){ 9 return list.isEmpty(); 10 } 11 public Object firstEl(){ 12 return list.getFirst(); 13 } 14 public Object dequeue(){ 15 return list.removeFirst(); 16 } 17 public void enqueue(Object e1){ 18 list.addLast(e1); 19 } 20 public String toString(){ 21 return list.toString(); 22 } 23 }