【牛客带你学编程C++方向】项目练习第7期(截止5.16)


C++项目练习:第7期
练习时间:5月2日-5月16日(2周)
活动规则:
  • 每一期一个项目,届时会开新帖发布
  • 学员直接将答案提交到该贴评论区即可
  • 两周后,公布导师参考答案
  • 导师评选出当期最佳代码(将设置为精彩回复

奖励:牛客大礼包一份(牛客定制水杯 牛客定制笔 牛客定制程序员徽章 滑稽抱枕)
参与方式:直接将你的代码回复到本帖评论区

----------------------------------------------------

本期题目:

实现模板类栈stack的数据结构:
类定义如下,要求实现对应栈的功能。
template <typename T, int MAX_SIZE>
class Stack
{
public:
    Stack();
    ~Stack();
    void Push(const T &elem); //压入元素
    void Pop();            //弹出元素
    T &Top();                //取栈顶
    const T &Top() const;
    bool Empty() const;
private:
    T *elems;    //使用数组的方式存储
    int top;
};

参与方式:直接将你的代码回复到本帖评论区

全部评论
template <typename T, int MAX_SIZE> class Stack { public:     Stack()     {         elems =new T[MAX_SIZE];         top = 0;     }     ~Stack()     {         delete[] elems;     }     void Push(const T &elem) //压入元素     {         if (top < MAX_SIZE) {             elems[top++] = elem;         }         else cout << "栈区已满" << endl;     }     void Pop()            //弹出元素     {         if (--top <= 0) {             cout << "栈区已空" << endl;         }     }     T &Top()              //取栈顶     {         return elems[top];     }     const T &Top() const     {         return elems[top]; //考虑对象为const     }     bool Empty() const     {         return top == 0;     } private:     T *elems;    //使用数组的方式存储     int top; };
点赞 回复 分享
发布于 2018-05-02 19:44
template <typename T, int MAX_SIZE> class Stack { public:     Stack()     {         if(MAX_SIZE <=0)         {             printf("初始化错误");             return;         }         elems = NULL;         top = -1;         maxinum = 0;     };     ~Stack()     {         delete[] elems;     };     //压入元素     void Push(const T &elem)     {             if (top >= (maxinum-1))             UpdateNum();         if(top < (MAX_SIZE-1))             elems[++top] = elem; else printf("栈满!添加错误!");     };     //弹出元素     void Pop()     {         if(top > -1) top--; else             printf("栈空!删除错误!");     };      //取栈顶                T &Top()     {         return elems[top];     };                     const T &Top() const     {         return elems[top];     };         bool Empty() const     {         return top == -1;     };     void UpdateNum()         {           if(maxinum <= 0)             maxinum = 10;         else if(maxinum <= (MAX_SIZE/2))             maxinum = maxinum*2;         else             maxinum = MAX_SIZE;         T* tmp = new T[maxinum];         for (int i = 0; i <= top; i++)         {             tmp[i] = elems[i];         }         delete[] elems;         elems = tmp;         }; private:     T *elems;    //使用数组的方式存储     int top; //栈顶数据所在的索引     int maxinum; //当前栈的最大空间 };
点赞 回复 分享
发布于 2018-05-02 16:03
template <typename T, int MAX_SIZE> class Stack { public:     Stack() :elems(NULL)         , top(0)         , capacity(0)     {}     ~Stack()     {             delete[] elems;             elems = NULL;     }     void Push(const T &elem) //压入元素     {         //int size = sizeof(elems);          checkCapacity();         if (top <= MAX_SIZE)         {             elems[top] = elem;             top++;         }         else         {             printf("栈已满,无法添加数据\n");         }     }     void Pop()           //弹出元素     {         top = top - 1;         if (top == -1)         {             printf("栈已空,没有数据可删除\n");         }     }     T &Top()                //取栈顶     {         return elems[top];     }     const T &Top() const     {         return elems[top];     }     bool Empty() const     {         return top == 0;     }     void checkCapacity()     {         if (top >= capacity)         {             capacity = capacity > 0 ? capacity * 2 : 3;             T* tmp = new T[capacity];             for (int i = 0; i < top; i++)             {                 tmp[i] = elems[i];             }             delete[] elems;             elems = tmp;         }     } private:     T *elems;    //使用数组的方式存储     int top;     int capacity; };
点赞 回复 分享
发布于 2018-05-02 12:33

相关推荐

找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务