package com.xxt.DataStructure;
import java.util.Iterator;
/**
* Created by star on 2017/2/26.
*/
public class MyQueue{
public static class Node<E>{
Object elementData;
Node<E> prerious;
Node<E> next;
public Node(Object elementData, Node<E> prerious, Node<E> next) {
this.elementData = elementData;
this.prerious = prerious;
this.next = next;
}
}
private MyQueue.Node header;
private MyQueue.Node last;
private int size = 0;
//入队操作.在链表的头节点插入元素
public void enQueue(Object o){
addBefore(o, header);
}
//出队操作,返回链表的尾节点的元素
public Object deQueue(){
return node(size);
}
public boolean isEmpty(){
return header == last;
}
public int size(){
return size;
}
private Node addBefore(Object o , Node node){
Node newNode = new Node(o, node.prerious, node.next);
newNode.prerious.next = newNode;
newNode.next.prerious = newNode;
size++;
return newNode;
}
private Node node(int index){
if(index < 0 || index > size){
throw new IndexOutOfBoundsException("数组下标越界"+size);
}
if(index < (size >> 1)){
Node e = header;
for(int i = 0; i < index; i ++){
e = header.next;
return e;
}
}else {
Node e = last;
for(int i = size - 1; i > index; i--){
e = last.prerious;
return e;
}
}
return null;
}
}