佇列具有先進先出的特點,從隊尾新增元素,從隊首刪除元素。對於佇列,通常有兩種實現方式:陣列和鍊錶。
package basicknowledge.集合框架.queue;
/** * @基本功能:利用陣列實現乙個迴圈佇列
* @program:summary
* @author:peicc
* @create:2019-07-24 10:11:06
**/public class myarrayqueue
myarrayqueue (int initcapacity)
//myarrayqueue型別的建構函式,實現佇列初始化
myarrayqueue(myarrayqueue<? extends e> c)
//返回元素的個數
public int getsize()
//入隊
public boolean enqueue(e e)
element[rear]=e;//元素置於隊尾
rear=(rear+1)%length;//rear後移一位,若到末尾則轉移到陣列頭部
return true;
}//出隊,獲取並移除佇列頭部元素
public e dequeue()
e ele=(e)element[font];
font=(font+1)%length;//rear後移一位,若到末尾則轉移到陣列頭部
return ele;
}//獲取佇列頭部元素,但不刪除
public e getfirst()
return (e)element[font];
}//佇列是否為空
public boolean isempty()
public static void main(string args)
system.out.println();
system.out.println("佇列元素的個數為:"+myarrayqueue.getsize());
system.out.println("----------列印輸出-----------");
while(!myarrayqueue.isempty())
}}
package basicknowledge.集合框架.queue;
/** * @基本功能:利用鍊錶實現佇列
* @program:summary
* @author:peicc
* @create:2019-07-24 10:59:06
**/public class mylistqueue
}//入隊
public void enqueue(e e)else
}//出隊
public e dequeue()
nodenode=font;
node.next=null;//斷開連線
font=font.next;
return node.item;
}public static void main(string args)
system.out.println("*********** 輸出佇列元素**********");
while(mylistqueue.font!=null)
}}
動手寫乙個阻塞佇列
之前看佇列,都是停留在看和使用的階段。再次看佇列的時候,忽然發現並沒有深入到底層。比如 阻塞佇列時如何阻塞的呢?是監聽,還是等待呢?然後看著看著就看到了lock和reentrantlock,為什麼不使用synchronized呢?為什麼使用condition,condition是什麼呢?wait,n...
手寫乙個Tomcat
1 工程截圖 2 封裝請求物件 通過輸入流,對http協議進行解析,拿到了http請求頭的方法和url author wangjie version 2018 11 9 封裝請求物件 通過輸入流,對http協議進行解析,拿到http請求頭的方法和url 3 封裝響應物件 基於http協議的格式進行輸...
手寫乙個ajax
在我看來,寫乙個ajax就需要5步,也就是5個單詞,這就是乙個ajax的流程。這五個單詞分別為 new open setrequestheader onreadystatechange send。記住這五個單詞你就有了ajax的整體的框架了。以上是最麻煩的一步,後面的步驟就比較簡單了。ajax.op...