栈的基本操作

栈是一种元素满足后进先出(LIFO)规则的线性表。一般来说,我们将表头称为栈底,表尾称为栈顶,栈的操作都是在栈顶进行的。

栈的基本操作如下:

 1 //栈的基本操作
 2 template <typename Type> class Stack{
 3 private:
 4     Type *elements;
 5     int max_size,top_index;
 6 public:
 7     Stack(int length_input){
 8         elements=new Type[length_input];
 9         max_size=length_input;
10         //top_index初始化为-1,top_index+1永远等于当前元素个数
11         top_index=-1;
12     }
13     ~Stack(){
14         delete[] elements;
15     }
16 
17     //入栈操作
18     bool push(const Type &element){
19         //判断栈是否已满
20         if(top_index+1>=max_size){
21             return false;
22         }
23         top_index++;
24         elements[top_index]=element;
25         return true;
26     }
27 
28     //出栈操作
29     bool pop(){
30         if(top_index<0){
31             return false;
32         }
33         top_index--;
34         return true;
35     }
36 
37     //返回栈顶元素
38     Type top(){
39         //当栈为空时停止程序
40         //注意要加#include <cassert>
41         assert(top_index>=0);
42         return elements[top_index];
43     }
44 
45     //判断栈是否为空
46     bool empty() {
47         return top_index < 0;
48     }
49 };

 

posted @ 2017-06-13 01:10  NoviScl  阅读(203)  评论(0编辑  收藏  举报