C++ 顺序栈的实现

来源:互联网 发布:go语言http json数据 编辑:程序博客网 时间:2024/06/14 03:57

C++顺序栈的实现,初始化栈使用构造函数,DestroyStack和ClearStack感觉很简单没写。

第一次用到泛型,栈内数据可以是各种类型。需要注意的是模板编译类型有包含编译模型和分别编译模型,前者是类定义、函数声明与函数定义都放在头文件中。分别编译模型不是所有编译器都支持。


//IStack.h#pragma once#include <iostream>using namespace std;template<class T>class IStack{public:IStack(int m);~IStack(void);bool isEmpty();bool isFull();    T pop( );void push(const T key);int getLength();private:int top;            //栈顶指针int maxsize;T *stack;};template <class T>IStack<T>::IStack(int m ){stack = new T[m] ;maxsize = m;top=-1;}template<class T>IStack<T>::~IStack(void){delete stack;}template<class T>bool IStack<T>::isEmpty(){if(top == -1)return true;else return false;}template<class T>bool IStack<T>::isFull(){return top == maxsize-1;}template<class T>T IStack<T>::pop(){if(isEmpty())return NULL;T data = stack[top];top = top-1;return data;}template <class T>void IStack<T>::push(const T key){if(top==maxsize-1){cerr<<"栈已满,不能压栈!"<<endl;exit(1);}++top;stack[top] = key;}template<class T>int IStack<T>::getLength(){return top+1;}


原创粉丝点击