【数据结构】 栈
2016-04-27 17:04
375 查看
栈结构,通俗易懂,特点:先进后出,后进先出。
以下,仅对于栈结构常用的操作进行实现
包括:
入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop)
若有纰漏,欢迎指正
以下,仅对于栈结构常用的操作进行实现
包括:
入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop)
#include <iostream> using namespace std; template<class T> class Stack { public: Stack(T size) // 初始化数组大小 :top(0) //栈顶指针 , _size(size) { _array = new T[size]; // top指向最后一个元素时,再往下跳会越界,所以多开一个 } ~Stack() { if (_array) { delete[] _array; } } public: void Push(const T val) { if (top >= _size) { cout << "overflow" << endl; return; } else { _array[top] = val; top++; } } T Pop() { T ret; if (top < 0) { cout << "underflow" << endl; return -1; } else { top--; ret = _array[top]; } return ret; } bool isEmpty() { return top == 0; } T Top() { if (!isEmpty()) { return _array[top - 1]; } else { cout << "error:stack is empty!" << endl; } } void Show() { if (isEmpty()) { cout << "stack has no data!" << endl; return; } for (size_t i = 0; i < top; i++) { cout << _array[i] << " "; } cout << endl; } private: size_t top; size_t _size; T* _array; }; void Test() { Stack<int> stk(5); stk.Push(1); stk.Push(2); stk.Push(3); stk.Push(4); stk.Push(5); stk.Show(); cout << stk.Top() << endl; cout << stk.Pop() << endl; cout << stk.Pop() << endl; cout << stk.Pop() << endl; cout << stk.Top() << endl; stk.Show(); } int main() { Test(); system("pause"); return 0; }栈结构是最简单的数据结构,很多数据结构都会用到栈结构,所以简单的栈结构常用的操作需掌握。
若有纰漏,欢迎指正
相关文章推荐
- C++基于栈实现铁轨问题
- C语言栈的表示与实现实例详解
- C语言实现颠倒栈的方法
- 算法系列15天速成 第十天 栈
- 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out
- Array栈方法和队列方法的特点说明
- java数据结构之java实现栈
- 浅析栈区和堆区内存分配的区别
- Mysql Error Code : 1436 Thread stack overrun
- 用Java代码实现栈数据结构的基本方法归纳
- 用PHP解决的一个栈的面试题
- 基于java中stack与heap的区别,java中的垃圾回收机制的相关介绍
- 浅谈C#中堆和栈的区别(附上图解)
- JavaScript数据结构与算法之栈详解
- C语言之栈和堆(Stack && Heap)的优缺点及其使用区别
- Python实现栈的方法
- JavaScript数据结构与算法之栈与队列
- JavaScipt中栈的实现方法
- Java中堆和栈的区别详解
- 详解Java的堆内存与栈内存的存储机制