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; }
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263