資料結構的一道題

2021-03-06 18:53:14 字數 906 閱讀 4655

1樓:匿名使用者

為n-1, 因為佇列需要設定成迴圈佇列,所以必須有乙個空格來區分佇列的頭和尾的分界線。

舉個例子:乙個長度為4的陣列做迴圈佇列,現在插入1,2,3,4四個數字:

作為佇列,需要兩個指標:隊頭指標head和隊尾指標tail。初始的時候(隊空),這兩個指標是重合的,假設都指向a[1]位置。如下

a[0] = null

a[1] = null<-- head(tail)

a[2] = null

a[3] = null

每插入乙個值,tail指標向後移乙個,每刪除乙個值,隊頭指標向「前」移動乙個。那麼插入1,2,3三個數以後,佇列的情況如下:

a[0] = null <-- tail

a[1] = 1 <-- head

a[2] = 2

a[3] = 3

如果現在插入4會出現什麼情況?

a[0] = 4

a[1] = 1 <--head(tail)

a[2] = 2

a[3] = 3

隊頭指標和隊尾指標再次重合!但是從第一步我們可以知道,隊空的標誌正是head和tail兩個指標重合(事實上這也正是我們判斷佇列是否為空的標準)。這樣的話,隊滿和隊空的標誌是一樣的,這時不可接受的。

因此乙個長度為n的陣列來作為迴圈佇列的話,佇列的長度最長只能為n-1, 隊空標誌是head和tail重合,隊滿標誌是tail在head「前」一位。

2樓:匿名使用者

為n,每個陣列元素儲存乙個佇列元素,當然,這個佇列需要設定成迴圈佇列!

3樓:匿名使用者

yesterday2651分析得很有道理,不過如果增加乙個標誌變數,用來區分head和tail重合時,佇列是空還是滿的話,結果就是n了.

一道資料結構課程設計題目,《資料結構》課程設計題目急急!!!!

include iostream.h include stdio.h typedef struct node lnode,linklist void creat linklist l p next null void putout linklist l cout x linklist p,u p l...

資料結構“時間複雜度”的題目,資料結構 有關時間複雜度題目 求高手!求詳細解釋

麗江旅遊指南網 o表示法首先要弄清楚什麼用它來代表的上限的漸近執行時間的演算法函式g n o g n 代表了一組函式。介紹到演算法書定義 o g n 看到上面也可以忽略不明白,你只需要知道在低階項的漸近積極的作用,在確定上限和下限,可以忽略不計,因為當n大,他們相對來說並不重要,指數最高的專案上腳的...

資料結構中和的區別是什麼資料結構中和的區別

應該是c 裡的吧?沒有在c語言版的資料結構中看見 吧?在定義時,是乙個識別符號,宣告該變數是乙個指標,比如說int p 那p就是乙個指向int型的指標 在呼叫時,p是指指標p指向的那個變數,比如說之前有int a 5 int p a 那麼p的值是a的位址,也就是指標p指向a,p則等於a的值,即 p ...