队列的链式结构
1.就是单向链表,只不过只能头出尾进,简称为链队列
2.为了操作方便,将队头指向头结点,队尾指向尾结点
3.操作与链表一致,使用链表的frist元素,与last元素进行操作
基本方法
public class LinkedQueue<E> implements Queue<E>{
private LinkedList<E> list;
public LinkedQueue(){
list = new LinkedList<E>();
}
public int getSize() {
return list.getSize();
}
public boolean isEmpty() {
return list.isEmpty();
}
public void clear() {
list.clear();
}
//进队
public void enqueue(E e) {
list.addLast(e);
}
//出队
public E dequeue() {
return list.removeFirst();
}
//获得队首,不出队
public E getFront() {
return list.getFirst();
}
//获得队尾,不出队
public E getRear() {
return list.getLast();
}
toString() ,equals()
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("LinkedQueue size="+getSize()+"\n");
if(isEmpty()){
sb.append("[]");
}else{
sb.append('[');
for(int i=0;i<getSize();i++){
sb.append(list.get(i));
if(i!=getSize()-1){
sb.append(',');
}else{
sb.append(']');
}
}
}
return sb.toString();
}
@Override
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(obj==this){
return true;
}
if(obj instanceof LinkedQueue ){
LinkedQueue queue = (LinkedQueue) obj;
if(queue.getSize()==getSize()){
return list.equals(queue.list);
}
}
return false;
}