c++用類寫棧和隊列的簡單基本操作(實驗)


繼續更文。這次用類來寫棧和隊列,都是用數組模擬的;

以下是棧和隊列的定義:

 

然后分別是棧和隊列的類:

 

 

完整代碼貼上:

//使用類來定義棧
class ZHAN
{
public:
    STACK s;
    //棧的基本操作
    void csh(STACK & s);                       //初始化
    bool isempty(STACK & s);                //判斷是否為空
    bool isfull(STACK & s);                    //判斷是否為滿
    bool push(STACK & s,int val);         //入棧
    bool pop(STACK & s,int & val);        //出棧
    int ding(STACK & s);                        //取棧頂元素
    int len(STACK & s);                          //取棧的長度(有效元素個數)
    void SHOW(STACK & s);                 //遍歷棧
};
void ZHAN::csh(STACK & s)
{
    s.top=-1;
}
bool ZHAN::isempty(STACK & s)
{
    if(-1==s.top)
        return true;
    else
        return false;
}
bool ZHAN::isfull(STACK & s)
{
    if(s.top==MAX-1) //下標從零開始
        return true;
    else
        return false;
}
bool ZHAN::push(STACK & s,int val)
{
    if(isfull(s))
        return false;
    else
    {
        s.data[++s.top]=val;  //top指針從-1開始 所以先++才能用
        return true;
    }
}
bool ZHAN::pop(STACK & s,int & val)
{
    if(isempty(s))
        return true;
    else
    {
        val=s.data[s.top--];
        return true;
    }
}
int ZHAN::ding(STACK & s)
{
    if(isempty(s))
    {
        cout<<"此棧為空棧!!"<<endl;
    }
    else
    {
        return s.data[s.top];
    }
}
int ZHAN::len(STACK & s)
{
    return s.top+1;
}
void ZHAN::SHOW(STACK & s)
{
    int i;
    while(!isempty(s))  //當棧不為空 不斷的出棧取值
    {
        pop(s,i);
        cout<<i<<endl;
    }
}

 隊列

//使用類來定義隊列
class DUILIE
{
public:
    QUEUE q;
    //隊列的基本操作
    void csh(QUEUE & q);                //初始化
    bool isempty(QUEUE & q);          //判斷是否為空
    bool isfull(QUEUE & q);              //判斷是否為滿
    int head(QUEUE & q);                 //取隊頭元素
    bool pop(QUEUE & q,int & val);  //將隊頭元素出隊
    bool push(QUEUE & q,int val);   //將隊尾元素入隊
    void SHOW(QUEUE & q);            //遍歷隊列
};
void DUILIE::csh(QUEUE & q)
{
    q.f=-1;
    q.r=-1;
}
bool DUILIE::isempty(QUEUE & q)
{
    return q.f==q.r?true:false;
}
bool DUILIE::isfull(QUEUE & q)
{
    if(q.r==MAX-1)
        return true;
    else
        return false;
}
int DUILIE::head(QUEUE & q)
{
    if(isempty(q))
    {
        cout<<"此隊列為空!!"<<endl;
    }
    else
    {
        return q.data[q.f+1];
    }
}
bool DUILIE::pop(QUEUE & q,int & val)
{
    if(isempty(q))
        return false;
    else
    {
        val=q.data[++q.f];
        return true;
    }
}
bool DUILIE::push(QUEUE & q,int val)
{
    if(isfull(q))
        return false;
    else
    {
        q.data[++q.r]=val;
        return true;
    }
}
void DUILIE::SHOW(QUEUE & q)
{
    if(isempty(q))
        cout<<"此隊列為空!!"<<endl;
    else
    {
        for(int i=q.f+1; i<=q.r; i++)
            cout<<q.data[i]<<" ";
        cout<<endl;
    }
}

  

實驗效果如如下:

 

老規矩,有錯改之,無則加勉。

一起學習,一起進步。

去吃飯了哈哈。

因為我的代碼是貼上去的 而不是寫的 居然說不足150字不讓發布

以下是湊字數的,忽略忽略;

山不在高,有仙則名。水不在深,有龍則靈。斯是陋室,惟吾德馨。苔痕上階綠,草色入簾青。談笑有鴻儒,往來無白丁。可以調素琴,金經。絲竹亂耳,案牘之勞形。南陽諸葛廬,西蜀子雲亭。孔子雲:何陋之有?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM