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


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

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

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

本期题目:

实现模板类栈queue的数据结构

template
<typename T>  
class
Queue{  
private:  
    unsigned int num;  
    T *elems;    //使用数组的方式存储      
public:  
    Queue();  
    ~Queue();  
    int size();  
    void push(T element);  
    void pop();  
    bool empty();  
    T back();  
    T front();  
}; 


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

全部评论
#define N 10 template<typename T> class Queue { private:     unsigned int num;     T *elems; public:     T * Head; //指向头节点指针     Queue()     {         num = 0;         elems = new T[N];     }     ~Queue()      {         delete[] elems;     }     int size()      {         return num;     }     void push(T element)      {         //如果队列满了,则先进先出再入         if (N == num)          {             for (int i=0,r=i+1; i < N-1; i++)             {                 elems[i]= elems[r];             }             elems[N - 1] = element;         }         //不满则直接添加         elems[num] = element;         ++num;     }         bool empty()     {         return 0 == num;     }     void pop()     {         //出队操作得先判断队列是否为空         //if (0==num)         //{         //    cout << "操作失败" << endl;         //}         /*else*/ if (1==num)         {             --num;         }         else         {             for (int i = 0, r = i + 1; i < num - 1; i++)             {                 elems[i] = elems[r];             }             --num;         }     }     //输出时 得先判断队列是否为空     T back()     {         return elems[num - 1];     }     T front()     {         return elems[0];     } };
点赞 回复 分享
发布于 2018-05-28 13:58
template <typename T> class    Queue{ private:     unsigned int num;     int capacity;     T *elems;    //使用数组的方式存储      public:     Queue() :elems(NULL)         , num(0)         , capacity(0)     {}     ~Queue()     {         if (elems)         {             delete[] elems;             elems = NULL;         }     }     int Size()     {         return num;     }     void Push(T element)     {         checkCapacity();         if (num < capacity)         {             elems[num] = element;             num++;         }                 }     void Pop()     {         int i = 0;         while (num>i)         {             elems[i] = elems[i + 1];             i++;         }         num--;     }     bool Empty()     {         return num == 0;     }     T Back()     {         return elems[num - 1];     }     T Front()     {         return elems[0];     }     void checkCapacity()     {         if (num >= capacity)         {             capacity = capacity > 0 ? capacity * 2 : 3;             T* tmp = new T[capacity];             for (int i = 0; i < num; i++)             {                 tmp[i] = elems[i];             }             delete[] elems;             elems = tmp;         }     } }; void  test() {     Queue<int> s;     s.Push(32);     s.Push(332);     s.Push(54);     s.Push(65);     s.Push(76);     while (!s.Empty())     {         cout << s.Front() << "  ";         s.Pop();     }     cout << endl; }
点赞 回复 分享
发布于 2018-05-24 11:12

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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