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;
}
第一次用到泛型,栈内数据可以是各种类型。需要注意的是模板编译类型有包含编译模型和分别编译模型,前者是类定义、函数声明与函数定义都放在头文件中。分别编译模型不是所有编译器都支持。
//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;
}
相关文章推荐
- C++实现的顺序表
- 顺序栈之C++实现
- C++实现简单顺序表
- C++数据结构 顺序表的实现(模板类的实现)
- 【C++】C++顺序栈实现的计算器
- 栈的顺序存储实现c++
- C++实现顺序计算输入表达式的值
- 动态顺序表(C++实现)
- C++顺序列表的实现(采用模板类)
- c/c++实现顺序表和单链表
- 【C++】类型萃取技术实现静态顺序表
- 顺序队列之C++实现
- 堆栈顺序存储的c++实现与测试
- 顺序表基本操作C++实现
- 【c++版数据结构】之顺序表的实现
- 顺序表的c++实现(参考浙大数据结构公开课)
- 完整的C++实现算法导论十三章红黑树以及十四章中的顺序统计树
- 队列的顺序存储及实现(C++版)
- 顺序表及其多种实现方式 --- C/C++
- 简单顺序栈(C++模版技术实现)