資料結構之佇列和環形佇列

2021-10-06 00:23:54 字數 2345 閱讀 6527

佇列實現

1.佇列是一種有序列表,遵循先進先出的原則。

1.陣列模擬佇列,分別有隊頭和隊尾指標,從-1開始,進隊時隊尾指標自增,出隊時隊頭指標自增,隊頭是指向第乙個資料的前乙個位置。示意圖如下:

package array;

public

class

queuearray

}//使用陣列模擬佇列-編寫乙個array-queue類

class

arrayqueue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

//向佇列新增資料

public

void

adddata

(int n)

arr[

++rear]

= n;

// 隊尾指標後移,向隊尾新增資料

}//向佇列獲取資料,出佇列

public

intgetdata

(int n)

return arr[

++front]

;//隊頭的前乙個位置後移,相當於出佇列

}//獲取隊頭的資料資訊

public

intshowfirst()

return arr[front+1]

;//返回隊頭的資料

}//輸出佇列資訊

public

void

showdata()

for(

int i=front+

1;i}

測試結果:符合佇列的進隊出隊特性。

2.環形佇列

這裡由於佇列是環形的,所以必須是自增的話要取模,約定如下:

*front是佇列的第乙個元素位置,rear是佇列最後元素的後乙個位置,用來約定環形佇列

*front和rear初始值從0開始,滿隊判斷:(rear+1)%maxsizefront,空佇列判斷:frontrear;

*新增和刪除,注意自增的話要取模rear=(rear+1)%maxsize,取數也要取模i%maxsize

*環形佇列的有效資料判斷(rear+maxsize-front)%maxsize;

package array;

public

class

circlequeuearray

}//使用陣列模擬佇列

class

circlearrayqueue

//判斷佇列是否滿了

public

boolean

isfull()

//判斷佇列是否為空

public

boolean

isempty()

//向佇列新增資料

public

void

adddata

(int n)

arr[rear]

= n;

// 因為rear是指向最後乙個元素的後乙個位置

rear=

(rear+1)

%maxsize;

//因為是環形列表,所有自增考慮是否滿環

}//向佇列獲取資料,出佇列

public

intgetdata

(int n)

//這裡front指向第乙個元素,因此要用臨時變數儲存記錄,front自增要取模,然後返回臨時變數

int temp =arr[front]

; front =

(front+1)

%maxsize;

//自增要取模

return temp;

//隊頭的前乙個位置後移,相當於出佇列

}//輸出佇列資訊

public

void

showdata()

for(

int i=front;i

countdata()

;i++)}

//計算當前環形佇列的有效資料個數

public

intcountdata()

//獲取隊頭的資料資訊

public

intshowfirst()

return arr[front]

;//返回隊頭的資料

}}

golang資料結構之環形佇列

目錄結構 circlequeue 環型佇列 type circlequeue struct push 向佇列中新增乙個值 func q circlequeue push val int err error q.array q.rear val 隊尾不包含元素 q.rear q.rear 1 q.ma...

java資料結構 環形佇列

arrayqueue存在乙個問題,假設當尾部插入元素滿了,頭部又刪掉了一些元素,這種情況下,就誤認為空間滿了,造成了假溢位,實際上頭部刪除了元素留出了空間。這時候環形佇列就解決了這樣的乙個問題,環形佇列的front指標始終指向當前佇列的最後位置 end指標始終指向第乙個元素的前乙個位置為 1,儲存元...

資料結構之GO實現環形佇列

環形佇列是 佇列的一種特殊形式。首先介紹佇列,然後引申出迴圈佇列。佇列又稱為 先進先出 fifo 線性表 限定插入操作只能在隊尾進行,而刪除操作只能在隊首進行 佇列也可以採用順序儲存結構或鍊錶結構來實現,分別稱為順序佇列和鏈佇列,下面就來簡單實現。package main import errors...