日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法题5 用数组实现队列

發布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法题5 用数组实现队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先定義隊列的接口

public interface IQueue<T> {/** 初始化一個空隊列*/IQueue InitQueue();/** 銷毀一個隊列*/IQueue DestroyQueue();/** 清空一個隊列*/IQueue ClearQueue();/** queue charge isEmpty()*/Boolean isEmpty();/** return queue`s length;*/Integer QueueLength();/** return the head queue*/T GetHead();/** insert the tail queue*/Boolean EnQueue(T t);/** delete the head ,or out queue*/T DeQueue(); }

將隊列接口實現

public class ArrayQueue<T> implements IQueue<T> {/*** 數組型隊列* <p>* 同樣需要一個頭指針,一個尾指針 當頭指針=尾指針=0時候為空 需要實現分配一個固定大小的數組* 正常情況下下,尾指針永遠指向隊尾元素的下一個位置,比如說隊尾元素在0 尾指針則在1* <p>* 注意!:數組型隊列有很大的劣勢,容易造成存儲空間浪費,而且不易擴容。 比如說,最大空間為6的數組隊列,* 進去了6個了元素,然后從隊頭出去了5個元素,此時,仍然不能插入新的元素* 因為隊尾指針仍然指向第6個元素,其仍然占據了最后一個位置,而隊頭是不允許插入的。這樣造成前面5個位置浪費。* <p>* 解決方法:1.元素移動位置,出隊一個 后面的元素往前挪。 缺點:每次出隊都需要移動位置 很麻煩 效率也低 2.動態擴容, 缺點:浪費了前面的空間* 3.最佳解決方案:構造環形隊列*/private Integer size;private Integer header;private Integer tail;private final Integer length = 6;private Object[] arr;@Overridepublic IQueue InitQueue() {// TODO Auto-generated method stubarr = new Object[length];tail = header = size = 0;return this;}@Overridepublic IQueue DestroyQueue() {// TODO Auto-generated method stubarr = null;tail = header = size = 0;return this;}@Overridepublic IQueue ClearQueue() {// TODO Auto-generated method stubtail = header = size = 0;for (int i = 0; i < arr.length; i++) {arr[i] = null;}return this;}@Overridepublic Boolean isEmpty() {return header == tail ? true : false;}@Overridepublic Integer QueueLength() {// TODO Auto-generated method stubreturn size;}@Overridepublic T GetHead() {// TODO Auto-generated method stubreturn (T) arr[header];}@Overridepublic Boolean EnQueue(T t) {// TODO Auto-generated method stubif (size >= length)return false;if (header == tail) {header = 0;arr[header] = t;tail =1;size++;return true;}else {arr[tail]=t;tail = tail +1;size++;return true;}}@Overridepublic T DeQueue() {// TODO Auto-generated method stubif(header == tail) {return null;}else {T t = (T)arr[header];header=header-1;size--;return t;}}}

總結

以上是生活随笔為你收集整理的算法题5 用数组实现队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。