資料結構之陣列佇列

2021-08-19 21:55:33 字數 2978 閱讀 2346

佇列的特性:

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