数据结构-栈的一些基础操作c++代码
2015-03-31 20:18
423 查看
堆栈(简称栈) 是一种操作受限的线性表,只允许在表的同一端进行插入和删除操作,且这些操作是按先进后出的原则进行的。
template <class T> struct SLNode { T data; //数据域 SLNode<T> *next; //指针域 SLNode(SLNode *nextNode = NULL) //构造函数 { next = nextNode; } SLNode(const T &item, SLNode *nextNode = NULL) //构造函数 { data = item; next = nextNode; } }; //顺序栈 template <class T> class AStack { public: AStack(int MaxStackSize) //构造函数 { size = MaxStackSize; stackArray = new T[MaxStackSize]; top = -1; } ~AStack() //析构函数 { delete []stackArray; } bool Push(const T &item) //向栈顶压入一个元素 { if (IsFull()) { cout << "Pushing into a full stack!" << endl; return false; } stackArray[++top] = item; return true; } bool Pop(T &item) //从栈顶弹出一个元素 { if (IsEmpty()) { cout << "Poping from an empty stack!" << endl; return false; } item = stackArray[top--]; return true; } bool Peek(T &item) const //存取栈顶元素 { if (IsEmpty()) { cout << "Peeking from an empty stack!" << endl; return false; } item = stackArray[top]; return true; } int IsEmpty() const //检测栈是否为空 { return top == -1; } int IsFull() const //检测是否满栈 { return top == size-1; } void clear() //清空栈 { top = -1; } private: int size; //数组的规模 T *stackArray; //存放堆栈元素的数组 int top; //栈顶所在数组元素的下标 }; //链式栈类LStack的定义和实现 template <class T> class LStack { public: LStack() //构造函数 { top = NULL; } ~LStack() //析构函数 { clear(); } void clear() //清空栈 { SLNode<T> *temp; while(!IsEmpty()) { temp = top->next; delete top; top = temp; } } bool Push(const T &item) //向栈顶压入一个元素 { top = new SLNode<T>(item, top); return true; } bool Pop(T &item) //从栈顶弹出一个元素 { if(IsEmpty()) { cout << "Poping from an empty stack!" << endl; return false; } item = top->data; SLNode<T> *temp = top; top = top->next; } bool Peek(T &item) const //读取栈顶元素 { if(IsEmpty()) { cout << "Poping from an empty stack!" << endl; return false; } item = top->data; return true; } int IsEmpty() const { return top == NULL; } private: SLNode<T> *top; };
相关文章推荐
- 数据结构-线性表的一些基础操作 c++代码
- 【分享】一些经典的C/C++语言基础算法及代码(三)
- 【分享】一些经典的C/C++语言基础算法及代码(一)
- 【分享】一些经典的C/C++语言基础算法及代码(二)
- C++写链表一些基础的操作
- 数据结构_串_串的一些操作_C++实现
- 数据结构——树(9)——二叉搜索树的操作实现C++代码
- [C++基础]036_一段关于指针的误操作代码
- C++的基础,平时随便写的一些代码
- 【分享】一些经典的C/C++语言基础算法及代码(四)
- C++语言数据结构 串的基本操作实例代码
- Windows服务用C++代码实现的一些操作-1:修改服务启动类型
- winform中一些基本操作的代码
- C++中链表的一些操作
- C++中文件操作的一些函数
- 如何编写跨平台C/C++代码的一些断想
- c++基础:C++的一些基本概念
- Jsp/Servlet:小结图片操作的一些代码 推荐
- 这么详细的分类 VC/C++源代码网站你见过没有? VC/C++中的每一个方法,每一个操作,每一个头文件,每一个函数,每一个类.每一个属性,每一个事件都有相应的范例代码
- C++中操作数据库的几段代码