2 資料結構與演算法 佇列

2021-10-14 03:57:43 字數 3183 閱讀 3777

銀行排隊案例

餐廳排隊案例等…

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

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

1、思路

佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖, 其中 maxsize 是該佇列的最大容量

因為佇列的輸出、輸入是分別從前後端來處理,因此需要兩個變數 front 及 rear 分別記錄佇列前後端的下標, front 會隨著資料輸出而改變,而 rear 則是隨著資料輸入而改變

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

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

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

2、**
public

class

arrayqueuedemo

catch

(exception e)

break

;case

'h':

int head =0;

trycatch

(exception e)

system.out.

println

("頭部資料是:"

+head)

;break

;case

'e':

scanner.

close()

; loop =

false

;break

;default

:break;}

} system.out.

println

("程式退出~");

}}class

arrayqueue

/** * 判斷佇列是否滿

*/public

boolean

isfull()

/** * 判斷佇列是否為空

*/public

boolean

isempty()

/** * 新增佇列

*/public

void

addarrayqueue

(int n)

rear++

; array[rear]

= n;

}/**

* 從佇列取資料

*/public

intgetarrayqueue()

front++

;return array[front];}

/** * 顯示所有佇列資料

*/public

void

showqueue()

for(

int i =

0; i < array.length; i++)}

/** * 顯示數頭部,非取

*/public

intheadqueue()

return array[front+1];}}

可參考:

思路:

**:

public

class

circlearrayqueuedemo

catch

(exception e)

break

;case

'h':

int head =0;

trycatch

(exception e)

system.out.

println

("頭部資料是:"

+ head)

;break

;case

'e':

scanner.

close()

; loop =

false

;break

;default

:break;}

} system.out.

println

("程式退出~");

}}class

circlearray

/** * 判斷佇列是否滿

*/public

boolean

isfull()

/** * 判斷佇列是否為空

*/public

boolean

isempty()

/** * 新增佇列

*/public

void

addarrayqueue

(int n)

array[rear]

= n;

rear =

(rear +1)

% maxsize;

}/**

* 從佇列取資料

*/public

intgetarrayqueue()

int value = array[front]

; front =

(front +1)

% maxsize;

return value;

}/**

* 顯示所有佇列資料

*/public

void

showqueue()

for(

int i = front; i < front +

size()

; i++)}

/** * 顯示數頭部,非取

*/public

intheadqueue()

return array[front];}

/** * 求出當前佇列有效資料

*/public

intsize()

}

資料結構與演算法 2 迴圈佇列

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素...

資料結構與演算法 佇列

學習了好長 一段時間的資料結構,由於時間關係一直沒有寫部落格。這次打算將這段時間的學習內容寫下來做個整理。佇列作為線性結構的一種,其實用性不用多說。這裡總結下兩種結構的佇列實現。迴圈佇列 先列下以順序表結構形成的普通順序佇列存在的問題 隊頭不斷刪除元素,將使佇列的頭部空出單元 隨著刪除 插入的進行,...

資料結構與演算法 佇列

佇列 佇列與棧不同,它是一種先進先出的結構 實現 1 陣列 2 鍊錶 記錄的資料 1 隊首位置 第乙個元素的位置 2 隊尾位置 最後乙個元素的位置 3 佇列大小 size 佇列操作 entryqueue 入隊 exitqueue 出隊 isqueueempty 隊列為空 isqueuefull 佇列...