package queue; /** * Created by wangzheng on 2018/10/9. */ public class DynamicArrayQueue { // æ°ç»ï¼itemsï¼æ°ç»å¤§å°ï¼n private String[] items; private int n = 0; // head表示é头䏿 ï¼tail表示é尾䏿 private int head = 0; private int tail = 0; // ç³è¯·ä¸ä¸ªå¤§å°ä¸ºcapacityçæ°ç» public DynamicArrayQueue(int capacity) { items = new String[capacity]; n = capacity; } // å ¥éæä½ï¼å°itemæ¾å ¥éå°¾ public boolean enqueue(String item) { // tail == n表示éåæ«å°¾æ²¡æç©ºé´äº if (tail == n) { // tail ==n && head==0ï¼è¡¨ç¤ºæ´ä¸ªéåé½å æ»¡äº if (head == 0) return false; // æ°æ®æ¬ç§» for (int i = head; i < tail; ++i) { items[i-head] = items[i]; } // æ¬ç§»å®ä¹åéæ°æ´æ°headåtail tail -= head; head = 0; } items[tail] = item; tail++; return true; } // åºé public String dequeue() { // 妿head == tail 表示éå为空 if (head == tail) return null; // 为äºè®©å ¶ä»è¯è¨çåå¦ççæ´å æç¡®ï¼æ--æä½æ¾å°åç¬ä¸è¡æ¥åäº String ret = items[head]; ++head; return ret; } public void printAll() { for (int i = head; i < tail; ++i) { System.out.print(items[i] + " "); } System.out.println(); } }