课程作业五

题目描述

  • 经过第四次作业,相信大家都对面向对象的分析与设计有了萌芽式的了解。那么本次作业的第一点就是针对第四次作业的完善。请根据第四次作业分析设计的结果进行编码。要求根据设计的类图进行编码,写出实现该程序所需要的类,
  • 学习数据结构栈的知识。

作业要求

  • 本次作业要求将程序写成.cpp和.h分离的形式
  • 根据设计的类图进行编码,搭建主体框架
  • 本次作业不要求实现核心的算法功能
  • 发表一篇博客,博客内容为:提供本次作业的github链接,对栈的知识学习探索。

 

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;
    }
    */ 
}

 

posted @ 2017-05-23 21:57  美少女的腿毛  阅读(157)  评论(0编辑  收藏  举报