• 课程作业五


    题目描述

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

    作业要求

    • 本次作业要求将程序写成.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;
        }
        */ 
    }
  • 相关阅读:
    tab点击切换
    下拉收起
    倒计时
    边框三角形
    jQuery Easing 使用方法及其图解
    网址收藏
    Java遍历Map对象的四种方式
    idea初使用之自动编译
    Mysql 存储引擎中InnoDB与Myisam的主要区别
    spring-boot-devtools在Idea中热部署方法
  • 原文地址:https://www.cnblogs.com/qvq-qvq/p/6896413.html
Copyright © 2020-2023  润新知