顺序栈的c++实现
2015-06-16 15:57
453 查看
栈的定义以及对栈的操作在mystack.h中实现
主函数如下:
#ifndef MYSTACK_H #define MYSTACK_H template<class T> class Mystack { public: Mystack(int stackcapacity); ~Mystack(); bool Isempty(); void Top(); void Push(T item); void Pop(); private: T *stack; int top; int capacity; }; //利用构造函数初始化栈的容量 template <class T> Mystack<T>::Mystack(int stackcapacity) { capacity= stackcapacity; stack=new T[capacity]; top=-1; } //利用析构函数清除栈 template <class T> Mystack<T>::~Mystack() { delete []stack; } //元素进栈 template <class T> void Mystack<T>::Push(T item) { if(top==capacity-1) { Changsize(stack,capacity,2*capacity); capacity=2*capacity; } stack[++top]=item; } //访问栈顶元素 template <class T> inline void Mystack<T>::Top() { if(!Isempty()) { cout<<"栈顶元素为:"<< stack[top]<<endl; } else { cout<<"此时栈为空"<<endl; } } //改变栈的容量 template <class T> void Changsize(T *a,int oldsize,int newsize) { if(newsize<0) throw "new length must be >=0"; T *temp=new T[newsize]; int number=min(oldsize,newsize); std::copy(a,a+number,temp); delete []a; a=temp; } //栈顶元素出栈 template <class T> void Mystack<T>::Pop() { if(!Isempty()) top=top-1; } template <class T> bool Mystack<T>::Isempty() { return top==-1; } #endif
主函数如下:
// main.cpp代码 #include "mystack.h" #include <iostream> using namespace std; int main() { Mystack<int> ST(20); ST.Push(11); ST.Push(12); ST.Push(13); ST.Top(); ST.Pop(); ST.Pop(); ST.Top(); ST.Pop(); ST.Top(); system("pause"); }
运行结果
相关文章推荐
- C++ 标准输入输出 函数 fopen fread等系列函数使用总结
- C++读写INI配置文件的类实例
- C++ 标准IO库 iostream,fstream,sstream
- c++ new 的几个用法
- c++拷贝构造函数(深拷贝,浅拷贝)详解
- C++和extern C
- c++字符串的排列组合
- C++虚函数讲解
- C++ Custom Control控件 向父窗体发送对应的消息
- c++ vector用法
- 使用C/C++编写PHP Extension
- C++xml文件操作 CMarkup学习方法说明(转)
- 网狐棋牌经典版管理后台操作手册
- C++ 11.2 accumulate、find_first_of 函数
- C++的iostream标准库介绍+使用详解(转)
- c语言计算一个日期的下一天后N天后的日期
- C++ 智能指针详解
- c++中#pragma的用法
- C++【重载,覆盖,隐藏三者的区别】
- 【C++】注释转换详解 C++注释转换为标准C语言注释