C++作業 棧的實現

C++作業 棧的實現

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int const len=20;
class Mstack
{
    private:    
    int  data[len]; //靜態數組 
    int *top; //棧頂
    int *base; //棧底
    int stacksize=0;
    public: 
    //(1)構造
    void init()
    {
        top=&data[0]; //top指針指向data首地址
        base=top;
        stacksize=0;
    }
    //(2)壓棧
    void push(int x)
    {
        *top=x;
        top++;
        stacksize++;
    }
    //(3)出棧
    void pop(int &e)
    {
        e=*top;
        top--;
        stacksize--;
        
    }
    //(4)賦值運算符重載
    Mstack& operator =(Mstack &m2)
    {
        m2.init();  //m2要初始化
        for(int i=0;i<stacksize;i++)  //複製
        {
            m2.base[i]=base[i];
        }
        m2.top=&m2.base[stacksize-1];  //m2top指針指向棧頂
        
    }
};
int main()
{
    int e;
    Mstack m1,m2;
    m1.init();
    for(int i=1;i<5;i++) // m1依次將i的值壓棧;
    {
        m1.push(i);
    }
    m1=m2;
    // 輸出m2棧頂數據值,並出棧;
    m2.pop(e);
    cout<<e;
    getchar();getchar();
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章