資料結構(佇列)學習心得

2021-08-04 22:59:38 字數 1428 閱讀 7135

資料結構(佇列)學習心得

1、佇列的定義:

佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。

佇列是一種先進先出(first in first out)的線性表,簡稱fifo. 允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。假設佇列是 q = (a1, a2, ….., an),如下圖所示:

佇列這種頭尾相接的順序儲存結構稱為迴圈佇列。(上圖認為佇列滿)

3、 如何判斷佇列滿還是空?

由於rear 可能比 front 大, 也可能比front小,所以儘管它們只相差乙個位置時就是滿的情況,但也可能是相差整整一圈。所以若佇列的最大尺寸為queuesize,那麼佇列滿的條件是(rear+1)%queuesize == front(取模「%」的目的就是為了整合rear 與 front 大小為乙個問題)

*通用的計算佇列長度公式為:

(rear - front + queuesize) % queuesize

4、迴圈佇列的**:

typedef

int qelemtype;

typedef

int status;

/*迴圈佇列的順序儲存結構*/

typedef

struct

sqqueue;

/*初始化乙個空佇列*/

status initqueue (sqqueue *q)

/*返回q的元素個數,也就是佇列當前長度*/

int queuelength (sqqueue q)

/*迴圈佇列的入佇列操作, 若佇列未滿,則插入元素e為q新的隊尾元素*/

status enqueue (sqqueue *q, qelemtype e)

q->data[q->rear] = e; /*將元素e賦值給隊尾*/

q->rear = (q->rear + 1) % maxsize; /*rear指標向後移一位置,*/

/*若到最後則轉到陣列頭部*/

return ok;

}/*若佇列不空, 則刪除q中隊頭元素, 用e返回其值*/

status dequeue (sqqueue *q, qelemtype e)

e = q->data[q->front]; /*將隊頭元素賦值給e*/

q->front = (q->front + 1) % maxsize; /*front 指標向後移一位置,若到最後則轉向陣列頭部*/

return ok;

}

資料結構學習心得(一)

計算機現在不在侷限於數字計算,更多應用於控制,管理及資料處理等非數值計算領域。這裡面涉及到兩個問題 資訊的表示,資訊的處理。分析待處理問題中的物件的特徵及個物件之間存在的關係,這既是資料結構這門課索要研究的問題。編寫解決實際問題的程式的一般過程 如何用資料形式描述問題?即由問題抽象出乙個適當的數學模...

資料結構學習心得總結

學習完成後,受益良多,也非常喜悅,非常開心,好像終於打了一場勝仗一樣!我打算將這乙個月的學習心得做乙個彙總,記錄下來。希望能給初學者帶來信心和經驗,能給大家分享這份快樂 剛開始打算學資料結構,是因為找工作面試的時候,很多公司都要求對資料結構有了解。沒辦法,我只有硬著頭皮學了。但是我沒有任何學習思路,...

資料結構學習心得系列(三)

本博文意在鞏固基礎知識,高手請繞過。部分 和內容參考嚴蔚敏人民郵電版出版社 資料結構 樹和二叉樹 樹樹 tree 是n n 0 個結點的有限集 t,在任意一棵非空樹中 有且僅有乙個特定的結點,稱為樹的根 root 當n 1 時,其餘結點可分為 m m 0 個互不相交的有限集 t1,t2,tm,其中每...