2017-05-08 43 views
0

我知道在循環隊列中有[0,n-1],那麼[n]將再次在[0]的地方。如果我們使用數組,那麼指向A [n-1]的指針應該增加1以指向A [0]。數據結構> queue:爲什麼(rear = front)是空的條件?

正常的隊列是這樣的:

| _ empty1_ | _ empty2_ | _ empty3_ | _ empty4_ | ...

所以 「前」 點這裏 「empty1」。但是,

第一個問題:後面指向何時隊列爲空?

第二個問題:後面指向何時隊列在單元格「empty1」包含一個元素時? (* 1)

PS:我讀了一些空線性隊列意味着rear = -1和front = 0的地方,隊列中填滿了一個單元意味着rear = front = 0;但是在我看到的一些僞代碼中(front = rear) - >隊列已滿。那這是什麼?數組單元格按數字0到n-1排序,因此,後= front = 0有一個單元格填充,它們都指向的單元格。 (?右)


在循環隊列,語句{後部=前面}表示該隊列是空的,對於一個滿的隊列,我們​​有:後部= N-1,前= 0,後部+ 1 =前面= 0 = N。


(* 1):我第三個問題是同爲2,但通告。

回答

0

在下面找到所有問題的答案。

  1. 當隊列爲空時,後方也指向第一個空節點作爲前節點。

現在對於第二和第三懷疑,我會給你一個聯合回覆,所以我會告訴你我的邏輯,我按照執行隊列而言,我希望它會幫助你創建你自己的邏輯 隊列數據結構。

因此,當我想要一些功能如FIFO(First IN First OUT)時,我使用隊列。現在,如果我將數組作爲我的存儲DS,那麼假設我有n作爲我的數組A的大小。因此,當我插入一個元素時,我將使後部=後部+1。因此,我的前部仍然指向0並且根據我的插入操作,我的後部繼續增加。現在我的陣列將盡快完成我的 後部== n。要檢查它是否爲空,所以當我們有一個元素在我們的數組中時,那時我們將有front和rear = 0,所以當我們刪除另一個元素時,使front和rear = -1。現在下次插入我們的第一個元素時,我們可以將前後的值設爲0,並根據我們的操作繼續改變後方的值。

同樣,我說這是我的方法,我根據我的要求和使用情況對其進行了更改。希望這有助於:)