数据结构—线性表的顺序存储结构—队列

Lawrence

队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。

 public class MyQueue<T>{
     /**
      *  使用数组作为底层存储 
      */ 
      private T[] elements;
      public MyQueue() {
        this.elements =(T[]) new Object[0];
      }
    
     /**
      * 描述:入队列 
      */ 
     public void add(T t) {
      //创建新数组
         T[] newElements = (T[]) new Object[elements.length + 1];
       //复制原数组数据到新数组
       for (int i = 0; i < elements.length; i++) {
                newElements[i] = elements[i];
       }
       //新增元素添加到新数组
       newElements[elements.length] = t;
        //替换旧数组
       this.elements = newElements;
      }

    /**
     * 描述:出队列 
     */ 
     public T poll() {
            if (this.elements.length == 0) {
                throw new RuntimeException("this queue is empty!");
            }
            T result = this.elements[0];
            T[] newElements = (T[]) new Object[elements.length - 1];
     //复制原数组数据到新数组
       for (int i = 0; i < newElements.length; i++) {
                newElements[i] = elements[i+1];
            }
            this.elements = newElements;
            return result;
      }
    
     /**
     * 是否是空 
     */
     public boolean isEmpty() {
            return this.elements.length == 0;
     }
 
    /**
     * 测试
     */
    public static void main(String[] args) {
        MyQueue<Integer> queue=new MyQueue();
        queue.add(1);
        queue.add(2);
        System.out.println(queue.poll());
        System.out.println(queue.poll());
    }
}
阅读 1.1k

尔识真理,真理释尔 - 自律=自强

29 声望
2 粉丝
0 条评论

尔识真理,真理释尔 - 自律=自强

29 声望
2 粉丝
宣传栏