棧與隊列

1.棧是一種線性存儲結構,元素遵循“先進後出”,並且只能在棧頂進行插入和刪除,

2、棧的相關概念:

(1)棧頂與棧底:允許元素插入與刪除的一端稱爲棧頂,另一端稱爲棧底
(2)壓棧:棧的插入操作,叫做進棧,也稱壓棧、入棧。
(3)彈棧:棧的刪除操作,也叫做出棧。

3、棧的常用操作爲:

(1)彈棧,通常命名爲pop
(2)壓棧,通常命名爲push
(3)求棧的大小
(4)判斷棧是否爲空
(5)獲取棧頂元素的值

s.empty();         //如果棧爲空則返回true, 否則返回false;
s.size();          //返回棧中元素的個數
s.top();           //返回棧頂元素, 但不刪除該元素
s.pop();           //彈出棧頂元素, 但不返回其值
s.push();          //將元素壓入棧頂

隊列

另一種線性存儲結構–隊列。他的元素遵循“先進先出”,隊首刪除,隊尾插入
隊列在數據結構中分爲普通隊列和環形隊列。首先說說普通隊列,就是一種類似隧道的數據結構,對於隊列裏的數據,是先入先出,這點和棧相反。但是普通隊列有些缺點,下面來說說普通隊列缺點。
普通隊列的數據從對頭開始離開的時候,後面一個內存空間會變爲新的隊頭,那麼對頭離開後剩下的內存空間就被剩下了,這就讓內存空間利用率不高。但是環形隊列就可以很好的解決這個問題,但是有點難哈。
環形隊列就是一個換,這個環裏可以分配內存空間,數據在環裏進行排隊,對頭刪了,又可以加上新的數據變爲隊偉,這樣內存的使用率就增加了

class Qu
{
public:
    Qu(int QueueCapaticy);//構造函數來產生一個內存空間,用來存放隊列
    void clearQu();//清楚隊列裏的數據
    bool  emptyQu() const;//判斷隊列是否爲空隊列
    int QuLen();//返回值爲隊列長度
    bool enterQu(int element);//數據進入隊列
    bool deleteQu(int element);//刪除隊列裏的數據
    bool fullQu();//判斷隊列是否滿狀態,滿了就不能插入數據了
    void travelQu();//遍歷數列裏的數據
private:
    int m_iQueueCapaticy;//隊列存儲內存空間大小
    int m_iQueueLen;//記錄隊列長度
    int m_iHead;//隊列頭
    int m_iTail;//隊列尾
    int*  m_pQueue;//隊列指針

};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章