萌新迴圈佇列學習筆記

2021-07-24 19:38:46 字數 554 閱讀 1112

迴圈佇列:

佇列最簡單的表示方法就是陣列啊;

用陣列表示佇列,那麼普通的方法就是簡單的搞兩個下標代表佇列頭,佇列尾,然後進隊,出隊,但是隨著入隊,出隊操作的進行,會使整個佇列整體向後移動,隊尾指標已經移到了最後,再有元素入隊就會溢位,而事實上此時隊中並未真的「滿員」,這種現象稱為「假溢位」。

為了解決隊尾溢位而實際上陣列仍然有空餘空間的問題,一般在佇列的順序儲存結構中採用迴圈佇列的方式:rear 和 front 到達陣列端點時,能折回到陣列開始處,即相當於將陣列頭尾相接,想象成環狀。

當插入和刪除操作的作用單元達到陣列的末端後,用公式"rear"(或 front ) % 陣列長度「取餘運算就可以實現折返到起始單元。

方法一:增設乙個變數,記錄當前佇列元素個數的變數size,或者用乙個變數flag記錄最後一次操作是入隊還是出隊。

根據變數size就可以直接判斷佇列是否是滿還是空;根據變數flag,就可以知道當front等於rear時是滿還是空;

方法二:少用乙個元素的空間;隊滿的條件:」 (rear+1) % 陣列長度 「 等於 front。隊空的條件仍然是:rear等於front;

萌新python機器學習筆記

萌新python機器學習 剛看完線性回歸的推導公式迫不及待的想用python進行實驗 import numpy as np from sklearn import datasets import matplotlib.pyplot as plt x,y datasets.make regressio...

萌新PYTHON學習01

an highlighted block class myabc 抽象基類,其中可能並沒有實際可呼叫的 但定義了若干函式名,表示其子類應當也擁有這些函式方法 def func1 pass def func2 pass class myclass myabc 繼承myabc的子類,根據規範,應當實現父...

萌新Java的學習筆記十五 遞迴 25

遞迴結構的組成 一 定義遞迴頭 什麼時候不呼叫自己 二 遞迴體 什麼時候呼叫自己 public class testrecrusion else public static void main string args 在學習中發現以下一種有趣邏輯 public class testrecrusion...