您的位置:首页 > 编程语言 > C语言/C++

C++ 顺序栈的实现

2013-07-11 21:41 225 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: