佇列的特性:
1.佇列是一種線性資料結構,與陣列相比,佇列的方法是陣列的子集;
2.向佇列中新增元素只能在隊尾進行,在隊首刪除元素;
3.佇列是一種先進先出的資料結構;
佇列的方法:
1.void enqueue(e e);向佇列中新增元素;
2.e dequeue();從佇列中刪除元素;
3.int getsize();獲取佇列的大小;
4.e setfront();獲取隊首元素;
5.boolean isempty();判斷佇列是否為空;
陣列的底層·**實現:
package cn.datastructures.arrayqueue;
/** * 在陣列中新增元素
* 1.在末尾位置新增元素
* 2.在陣列元素中任意位置新增元素
* @author administrator
* */
public
class array
//無參構造,預設陣列容量為10;
public
array()
//獲取陣列容量
public
intgetcapacity()
//獲取陣列中元素的個數
public
intgetsize()
//判斷陣列是否為空
public boolean isempty()
//在元素的最後位置新增元素
public
void
addlast(e e)
//在陣列的第乙個位置上新增元素
public
void
addfirst(e e)
//在陣列中的任意位置新增元素
public
void
add(int index,e e)
if(size==data.length)
for(int i=size-1;i>=index;i--)
data[index]=e;
size++;
}//更改對應索引上的元素
public
void
set(int index,e e)
data[index]=e;
}//獲取對應索引位置上的元素
public e get(int index)
return data[index];
}//獲取陣列中第乙個元素
public e getfirst()
//獲取陣列中最後乙個元素
public e getlast()
//顯示陣列中的元素
public string tostring()
}return sb.tostring();
}//判斷陣列中是否有元素e
public boolean contains(e e)
}return
false;
}//找出對應元素對應的索引
public
intfind(e e)
}return -1;
}//刪除元素,並返回刪除的元素
public e remove(int index)
e res=data[index];
for(int i=index+1;i1]=data[i];
}size--;
if(size==data.length/4&&data.length/2!=0)
return res;
}//刪除陣列第乙個元素,並返回刪除的元素
public e removefirst()
//刪除陣列最後乙個元素,並返回刪除的元素
public e removelast()
//查詢元素e,如果找到則刪除
public
void
removeelement(e e)
}//對陣列進行擴容,動態陣列
private
void
resize(int newcapacity)
陣列佇列的**實現:
package cn.datastructures.arrayqueue;
//構造方法,並實現介面
public
class
arrayqueue
implements
queue
public arrayqueue()
@override
public void enqueue(e e)
@override
public e dequeue()
@override
public int getsize()
@override
public boolean isempty()
@override
public e setfront()
public string tostring()
}return res.tostring();
}public
static void main(string args)
system.out.println(array);
}array.setfront();
}}
陣列佇列的時間複雜度分析:
對於佇列的新增enqueue(e e)、隊首的查詢setfront()、獲取佇列大小getsize()、判斷isemptty()操作,每一次只對佇列的乙個元素進行一次操作,所以時間複雜度為:o(1)
對於佇列的刪除操作dequeue(),因為每次從佇列的首部刪除乙個元素時,後面的元素都要向前挪動乙個位置,所以刪除操作時是對整個佇列元素進行操作,所以此時時間複雜度是:o(n)
資料結構 陣列佇列
佇列的實現還是依託於一開始所寫的陣列 資料結構 二次封裝自己的陣列 一 完成陣列基本功能 資料結構 二次封裝自己的陣列 二 公升級為泛型陣列 資料結構 二次封裝自己的陣列 三 公升級為動態陣列 下面是佇列的實現 class arrayqueue queue public arrayqueue pub...
資料結構 陣列佇列 迴圈佇列
佇列 是 先進先出 的資料結構,從隊尾入隊,從隊頭出隊。佇列中使用的array,參考 資料結構 手寫動態陣列 public inte ce queue public class arrayqueue implements queue public arrayqueue int capacity ov...
資料結構 ArrayDeque 雙向陣列佇列
簡介優先順序佇列只支援從一段取資料,內部結構是陣列,但是必須符合二叉堆,每次取資料都會伴隨上移下移,如果我們元素不不需要排序,有沒有更好的佇列呢?arraydeque 就能滿足這個需要,並且它可以在兩端方資料和取資料,內部也是用陣列實現。arraydeque 類 public class array...