栈的c++实现
来源:互联网 发布:安居客经纪人网络平台 编辑:程序博客网 时间:2024/06/05 02:13
一 固定大小的栈
代码如下
//// stack.h// stack//#ifndef __stack__stack__#define __stack__stack__#include <stdio.h>template <class Type>class Stack{private: enum {MAX = 10}; Type items[MAX]; int top;public: Stack(); bool isempty(); bool isfull(); bool push(const Type & item); bool pop(Type &item);};template <class Type>Stack<Type> ::Stack(){ top = 0;}template <class Type>bool Stack<Type>::isempty(){ return top == 0;}template <class Type>bool Stack<Type>::isfull(){ return top == MAX;}template <class Type>bool Stack<Type>::push(const Type & item){ if (top < MAX) { items[top++] = item; return true; } else return false;}template <class Type>bool Stack<Type>::pop(Type & item){ if (top > 0) { item = items[--top]; return true; } else return false;}#endif /* defined(__stack__stack__) */
二 大小可变的栈
代码如下
#ifndef __stack__stcktp1__#define __stack__stcktp1__#include <stdio.h>template <class Type>class Stack {private: enum {SIZE = 10}; int stacksize; Type * items; int top;public: explicit Stack(int ss = SIZE); Stack(const Stack & st); ~Stack() {delete [] items;} bool isempty() {return top == 0;} bool isfull() {return top == stacksize;} bool push(const Type & item); bool pop(Type & item); Stack & operator=(const Stack & st);};template <class Type>Stack<Type> ::Stack(int ss):stacksize(ss),top(0){ items = new Type[stacksize];}template <class Type>Stack<Type> ::Stack(const Stack & st){ stacksize = st.stacksize; top = st.top; items = new Type[stacksize]; for (int i = 0; i < top; i++) { items[i] = st.items[i]; }}template <class Type>bool Stack<Type>::push(const Type & item){ if (top < stacksize) { items[top++] = item; return true; } else return false;}template <class Type>bool Stack<Type>::pop(Type &item){ if (top > 0) { item = items[--top]; return true; } else return false;}template<class Type>Stack<Type> & Stack<Type>::operator=(const Stack<Type> &st){ if (this == &st) { return *this; } delete []items; stacksize = st.stacksize; top = st.top; items = new Type[stacksize]; for(int i = 0;i < top;i++) { items[i] = st.items[i]; } return *this;}#endif /* defined(__stack__stcktp1__) */
0 0
- 栈的C实现
- 【c++】栈的实现
- 栈的C语言实现
- 顺序栈的实现 c
- 栈的C语言实现
- C语言栈的实现
- 栈的实现(C++)
- C/C++栈的实现
- 栈的C语言实现
- c链式栈的实现
- 顺序栈的C实现
- 链式栈的C实现
- 栈的C数组实现
- 栈的C语言实现
- 栈的c语言实现
- [c++]栈模板的实现
- 栈的C语言实现
- 动态栈的实现(C++)
- 一些有用的mysql语句(不断积累更新)
- jquery easyui datagrid 获取Checked选择行(勾选行)数据
- linux下创建eclipse的桌面快捷方式
- Leetcode Permutations II 最简单的解法
- dbms_scheduler介绍
- 栈的c++实现
- JS正则表达式中特殊字符的含义
- css_圆角的制作
- YUV转RGB
- 实现无边框窗体的拖动及窗体大小变化
- TCP协议中FLAG的含义
- HBase学习(三)使用Java API对HBase表数据操作
- iOS 获取手机系统属性
- tomcat配置文件server.xml详解