手寫乙個佇列

2021-09-27 12:34:35 字數 1803 閱讀 6372

佇列具有先進先出的特點,從隊尾新增元素,從隊首刪除元素。對於佇列,通常有兩種實現方式:陣列和鍊錶。

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...