栈(stack)的模板类及成员函数的实现
来源:互联网 发布:java封装是什么意思 编辑:程序博客网 时间:2024/05/29 08:59
容器的数据结构都是用模板类实现的,包括栈(stack),队列(queue),双端队列(deque),向量(vector)等,下面是栈的模板类,以及成员函数的实现
定义头文件
#include<assert.h>#include<iostream>using namespace std;const int stackIncreament=20;template<class T>class SeqStack{public:SeqStack(int sz = 50);~SeqStack();bool push(const T& x);bool pop(const T& x);bool isFull()const{return (top == maxsize-1)?true:false;}bool isEmpty()const{return (top ==-1)?true:false;}int getsize(){return top+1;}T gettop();void makeEmpty(){top = -1;}private:T * element;int maxsize;int top;void overflowProcess();};
成员函数的实现
#include "stack.h"template<class T>SeqStack<T>::SeqStack(int sz):top(-1),maxsize(sz){element = new T[maxsize];assert(element!=NULL);}template<class T>bool SeqStack<T>::push(const T& x){if(isFull()==true)return false;element[++top]=x;return true;}template<class T>bool SeqStack<T>::pop(const T& x){if(isEmpty()==true)return false;x = element[top--];return true;}template<class T>T SeqStack<T>::gettop(){if(isEmpty()==true)return -1;T x = element[top];return x;}template<class T>void SeqStack<T>::overflowProcess(){T* newarray = new T[maxsize+stackIncreament];if(newarray==NULL){cerr<<"allocate failed"<<endl;exit(1);}for(int i=0;i<=top;i++){newarray[i]=element[i];}maxsize = maxsize + stackIncreament;delete []element;element = newarray;}
阅读全文
0 0
- 栈(stack)的模板类及成员函数的实现
- <类模板 的 成员函数的特化>及<类 的 成员模板函数的特化>
- 类模板的成员函数及类的成员模板函数的特化
- C++:栈(stack)的模板类实现
- 类模板的成员函数
- 类模板的成员函数
- 类模板的成员函数模板写法
- 传递模板类的成员函数指针及static成员函数
- C#中Stack<T>类的使用及部分成员函数的源码分析
- 自己实现的stack模板类
- C++数据结构栈Stack的实现模板类
- Stack数据结构的模板实现
- 类模板示例及类中成员函数的模板化
- 类模板示例及类中成员函数的模板化
- 类模板成员函数的调用问题
- 普通类的模板成员函数
- c++模板类成员函数的写法
- vector模板类的成员函数
- 反调试技巧总结-原理和实现
- Android实用功能分享——应用版本的更新实例
- 算法细节系列(29):any sum
- Rapidjson的简单使用示例
- Linux应用程序性能优化教程
- 栈(stack)的模板类及成员函数的实现
- Linux--高级I/O多路复用之select
- Android常用实例——截取APP当前界面(可带图片、文字水印)
- Angular开发(二十三)-angular响应式表单正确开发姿势
- 基于 RabbitMQ 的实时消息推送 开源 免费 有demo
- LeetCode | 9. Palindrome Number (回文数)
- 这是我的第一篇文章
- Django开发博客-(3)Models
- FATS_POW