資料結構與演算法之佇列

2021-10-11 02:42:21 字數 2839 閱讀 6629

佇列介紹

1.佇列是乙個有序列表,可以用陣列或是鍊錶來實現。

2.遵循先入先出的原則。即:先存入佇列的資料,要先取出。後存入的要後取出

3.示意圖:

陣列模擬佇列

當我們將資料存入佇列時稱為」addqueue」,addqueue 的處理需要有兩個步驟:思路分析

1.將尾指標往後移:rear+1 , 當front == rear 【空】

2.若尾指標 rear 小於佇列的最大下標 maxsize-1,則將資料存入 rear所指的陣列元素中,否則無法存入資料。 rear == maxsize - 1[佇列滿]

**實現:

class

queue

//判斷是否對滿

public

boolean

isfull()

//判斷是否隊空

public

boolean

isempty()

//入隊

public

void

addqueue

(int n)

rear++

; arr[rear]

=n;}

//出隊

public

intgetqueue()

front++

;return arr[front];}

//佇列的遍歷

public

void

showqueue()

for(

int i=

0;i//遍歷佇列中存在的元素

public

void

show()

system.out.

println

(front+

" "+rear)

;for

(int i=front+

1;i<=rear;i++)}

//取頭節點的資料

public

intheadqueue()

return arr[front+1]

;}}public

class

arrayqueue

queue.

showqueue()

; system.out.

println

( queue.

getqueue()

);system.out.

println

(queue.

getqueue()

);system.out.

println

("--------------");

queue.

showqueue()

; system.out.

println

("--------------");

queue.

show()

; queue.

addqueue(8

);}}

問題分析和效能優化:1.目前陣列使用一次就不能用了,沒有達到復用效果

2.將陣列使用演算法改進成乙個環形佇列 取模:%

迴圈佇列

1.判斷隊滿的條件:(rear+1)%maxsize==front

2.判斷佇列中實際有效的個數:(rear+maxsize-front)%maxsize

解決實現乙個環形佇列:

class

circlequeue

//判斷是否對滿

public

boolean

isfull()

//判斷是否隊空

public

boolean

isempty()

//入隊

public

void

addqueue

(int n)

arr[rear]

=n; rear=

(rear+1)

%maxsize;

}//出隊

public

intgetqueue()

int value=arr[front]

; front=

(front+1)

%maxsize;

return value;

}//遍歷佇列中存在的元素

public

void

show()

system.out.

println

(front+

" "+rear)

;for

(int i=front;i

size()

;i++)}

//取頭節點的資料,顯示隊頭資料

public

intheadqueue()

return arr[front];}

//返回佇列中實際有效的個數

public

intsize()

}public

static

void

main

(string[

] args)

資料結構與演算法之佇列

佇列是乙個有序的線性列表,可以用陣列或鍊錶來實現,遵循先進先出 後進後出的原則。佇列只能從列表的一端進行入隊另一端進行出隊操作。佇列有兩種儲存資料的形式 順序儲存 順序儲存的佇列也稱為順序佇列,內部使用陣列來實現的,順序佇列又分為非迴圈順序佇列和迴圈順序佇列。順序佇列是採用兩個指標,頭指標 fron...

《資料結構與演算法》之佇列

資料結構與演算法 之鍊錶 資料結構與演算法 之鏈棧 資料結構與演算法 之排序 資料結構與演算法 之二分查詢 資料結構與演算法 之二叉樹 如何理解 佇列 你可以把它想象成排隊買票,先來的先買,後來的人只能站末尾,不允許插隊。先進者先出,這就是典型的 佇列 我們知道,棧只支援兩個基本操作 入棧 push...

資料結構與演算法之佇列

前言 我寫資料結構與演算法這幾篇博文的目的是為了讓大家對資料結構與演算法有乙個基礎的認知。想更上一層樓的還須各位自學。佇列是資料結構的一種。他的原理是先進先出 後進後出 和棧,表一樣,佇列也分為順序佇列和鏈佇列。如圖 順序棧最開始時 順序佇列插入元素後 順序佇列刪除元素後 總結順序佇列的特點 順序佇...