【动手敲代码】:顺序栈(C++)

1 #include<iostream>
 2 
 3 template<class T>
 4 class Stack
 5 {
 6     private:
 7     int top;
 8     T* base;
 9     int size;
10     T* elements;
11     public:
12     Stack<T>(int sz):size(sz),top(-1)
13     {
14     base = new T[sz];
15     if(!base)
16         std::cout << "momoryAllocationError" << std::endl;
17     elements = base;
18     }
19     ~Stack<T>()
20     {    delete[] base;    }
21     bool IsEmpty() const
22     { return static_cast<bool>(top == -1); }
23     bool IsFull() const
24     { return static_cast<bool>(top == size - 1);   }
25     void Push(const T item);
26     T Pop();
27     void disp();
28     void Destory();
29 };
30 
31 template<class T>
32 void Stack<T>::Push(const T item)
33 {
34     if(top == size - 1)
35     std::cout << "Stack is full" << std::endl; 
36     else
37     {
38     top++;
39     *(elements + top) = item;
40     }
41 }
42 
43 template<class T>
44 T Stack<T>::Pop()
45 {
46     if(top == -1)
47     std::cout << "Stack is empty" << std::endl;
48     T item = *(elements + top);
49     top--;
50     return item;
51 }
52 
53 template<class T>
54 void Stack<T>::disp() 
55 {
56     int p = top;
57     std::cout << "*****数据输出*****" << std::endl;
58     while(p + 1)
59     {
60     std::cout << *(elements + p) << std::endl; 
61     p--;
62     }
63     std::cout << "*****输出结束*****" << std::endl;
64 }
65 
66 template<class T>
67 void Stack<T>::Destory()
68 {
69     ~Stack<T>();
70 }

原文链接: https://www.cnblogs.com/VortexPiggy/archive/2012/05/06/2468774.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/49529

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午1:13
下一篇 2023年2月9日 上午1:13

相关推荐