資料結構 陣列模擬環形佇列

2021-10-08 00:17:42 字數 2178 閱讀 2018

一、用陣列模擬佇列時,要考慮到復用的效果,所以用環形佇列來表示

二、陣列模擬環形佇列中 往佇列裡新增資料 思路:

先判斷佇列是否為滿,(rear+1) % maxsize = front

將資料加入佇列,arr[rear]=n

將隊尾指標往後移,rear要取模,rear = (rear+1) % maxsize

三、 往佇列裡取出資料 思路:

先判斷佇列是否為空,rear == front

將front位置的值存放到臨時變數中,int value = arr[front]

將隊首指標front往後移,要取模,front = (front+1)%maxsize

返回臨時變數,return value

四、佇列有效資料個數

(rear + maxsize - front) % maxsize

五、顯示佇列所有資料

先判斷佇列是否為空,如果為空,則顯示沒有資料

顯示佇列所有資料要從以front開始,直到front + 佇列的有效資料個數,進行遍歷

for

(int i = front; i < front+

size()

; i++

)catch

(exception e)

break

;case

'h':

trycatch

(exception e)

break

;case

'e':

scanner.

close()

; loop =

false

; system.out.

println

("退出程式~");

break

;default

:break;}

} system.out.

println

("程式完全退出~~");

}}class

circlearrayqueue

//判斷佇列是否為空

public

boolean

isempty()

//判斷佇列是否滿

public

boolean

isfull()

//往佇列新增資料

public

void

addqueue

(int n)

//將資料加入佇列

arr[rear]

=n;//rear取模,rear:佇列後乙個位置

rear =

(rear+1)

% maxsize;

}//往佇列獲取資料,即取出

public

intgetqueue()

//將front位置的值存放到臨時變數中

int value = arr[front]

;//front往後移,要取模

front =

(front+1)

%maxsize;

//返回臨時變數

return value;

}//獲取佇列頭資料

public

intheadqueue()

//front是佇列的第乙個位置

return arr[front];}

//顯示佇列所有資料

public

void

showqueue()

for(

int i = front; i < front+

size()

; i++)}

//獲取佇列的有效資料

public

intsize()

}

七、陣列模擬環形佇列,達到了一種復用的效果,取出資料後,可以往佇列裡新增資料,同時 front 和 rear 也會動態變化。

資料結構 陣列模擬環形佇列

front指向佇列的第乙個元素,且front的初始值為0 若不留有空位置,rear指向佇列的末尾元素的下乙個位置,會導致隊滿的時候與隊空的時候判斷條件會是一樣的,都是rear front 當佇列滿時,條件是 rear 1 maxsize front 隊列為空的條件,rear front 這樣分析時,...

資料結構03 陣列模擬環形佇列

1.分析佇列滿的條件是 rear 1 maxsize front 2.分析rear向後移的條件 rear rear 1 maxsize 3.分析front向後移的條件 front front 1 maxsize 程式退出 class circlearrayqueue 判斷佇列是否已滿 public ...

資料結構 陣列模擬的非環形佇列

佇列與棧類似,但是主要區別是棧是先進後出,而佇列則是先進先出的。非環形佇列 class arrayqueue 判斷佇列是否滿 private boolean isfull 判斷佇列是否為空 private boolean isempty 新增資料到佇列 void addqueue int n rea...