课程作业五
题目描述
- 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
- 学习数据结构栈的知识。
作业要求
- 本次作业要求将程序写成.cpp和.h分离的形式
- 根据设计的类图进行编码,搭建主体框架
- 本次作业不要求实现核心的算法功能
- 发表一篇博客,博客内容为:提供本次作业的github链接,对栈的知识学习探索。
对第四次的类做了部分修改
关于栈的学习
创造一个栈的类,头文件:
class MyStack { public: MyStack(int size);//初始化栈,设定栈顶和栈的容量 ~MyStack();//析构函数回收空间 bool isEmpty();//判断栈是否是空的 bool isFull();//判断栈是否满了 void clearStack();//清空栈 int stackLength();//计算已经有的元素个数 bool push(char elem);//入栈 bool pop(char &elem);//出栈 void stackTraverse();//遍历 private: char *m_pBuffer;//栈空间指针 int iSize;//栈容量 int iTop;//栈顶 } ;
函数实现:
1.构造函数和析构函数
MyStack::MyStack(int size){ iSize=size; m_pBuffer=new char[size]; iTop=0;//表明当前栈为空栈 }
MyStack::~MyStack(){ delete []m_pBuffer; }
2.判断栈是否满或者空
bool MyStack::isEmpty(){ if(0==iTop)//提高代码质量,误输入成“=”时会报错 return true; else return false; } bool MyStack::isFull(){ if(iTop>=iSize) return true; else return false; }
3.清空栈
void MyStack::clearStack(){ iTop=0;//表明栈中的所有值无效 }
4.返回当前元素个数
int MyStack::stackLength(){ return iTop; }
5.入栈
bool MyStack::push(char elem){ if(!isFull())//如果栈没有满 { m_pBuffer[iTop]=elem; iTop++; return true; } else return false; }
6.出栈
bool MyStack::pop(char &elem){ if(!isEmpty)//如果栈不是空的 { iTop--; elem=m_pBuffer[iTop]; return true; } }
7.遍历
void MyStack::stackTraverse(){ for(int i=0;i<iTop;i++){//从头到尾遍历 cout<<m_pBuffer[i]<<endl; } /* for(int i=iTop-1;i>=0;i--){//从尾到头遍历 cout<<m_pBuffer[i]<<endl; } */ }