佇列基本概念 迴圈佇列

2022-10-31 22:03:05 字數 1116 閱讀 1593

線性結構的兩種常見應用:

佇列定義:

一種可以實現「先進先出」的儲存結構,即「一端入,一端出」, 隊首(front)出隊,隊尾(rear)入隊(注:若front指向隊首,則rear指向隊尾最後乙個有效元素的下乙個元素;若rear指向隊尾,則front指向隊首第乙個有效元素的下乙個元素)

分類:鏈式佇列 --- 用鍊錶實現

靜態佇列 --- 用陣列實現,靜態佇列通常都必須是迴圈佇列

迴圈佇列:

1. 靜態佇列為什麼必須是迴圈佇列?

為了減少記憶體浪費。如果用傳統意義的陣列實現佇列,無論入隊還是出隊,rear和front指標只能+不能-;比 f元素下標小的的陣列元素下標就浪費了。

2.迴圈佇列需要幾個引數來確定?

兩個引數:front、rear 兩個引數在不同場合有不同的含義

3.迴圈佇列各個引數的含義

1)佇列初始化 front和rear的值都是零,初始化時佇列就是空的。

2)佇列非空 front代表佇列的第乙個元素 rear代表了最後乙個有效元素的下乙個元素

3)佇列空 front和rear的值相等,但是不一定是零

4.迴圈隊列入隊偽演算法需要判斷r是否指向陣列最後乙個元素。

兩步完成:

1)將值存入r所指向的位置

2)將r後移,正確寫法是rear = (rear+1)%陣列長度錯誤寫法:rear=rear+1;若rear已經在規定範圍的隊尾,就不能直接+1,否則越界

5.迴圈佇列出隊偽演算法

front = (front+1)% 陣列長度,比如出隊陣列元素下標是0,陣列長度是5,則front作為隊首指向(0+1)%5 = 1,那麼此時隊首下標是1

6.如何判斷迴圈佇列是否為空?

如果front與rear的值相等,則佇列一定為空

7.如何判斷迴圈佇列是否已滿?

方法一:

多增加乙個表標識的引數

方法二(常用):

少用乙個佇列中的元素(才乙個,不影響的),比如一共有n個元素的位置,規定n-1個為滿,

如果rear和front緊挨著(r的下乙個位置是f),則佇列已滿。

用c語言描述:

if((r+1)%陣列長度)==f)

佇列已滿

else

佇列不滿

順序迴圈佇列源程序

include include using namespace std class seqqueue 迴圈佇列這個類的定義 判佇列是否為空 bool isfull 判佇列是否滿int getsize 求出隊中實際元素個數void output const 輸出隊中元素private int rear...

隊形佇列基本動作內容

1 集合 2 縱隊 3 橫排 4 立正 5 稍息 6 跨立 7 報數 8 點名 9 向右看齊 10 向前看齊 11 側平起 12 前平伸 13 體操隊形 14 向右轉 15 向左轉 16 向後轉 17 蹲下與起立 18 坐下與起立 19 齊步走與立定 20 跑步走與立定 隊形佇列程式安排 一 集合與...

鏡頭基本概念介紹

一焦距長 focal length 光線從無限遠距離被鏡頭內部聚在光軸上的共同點。這個共同點就是ccd camera的影像sensor位置,也叫做聚焦點 focal point 鏡頭的設計有2個主要點,第一主要點及第二主要點,介於第二主要點及聚焦點的距離,就是鏡頭焦距長 focal length 鏡...