#ifndef SEQUENCESTACK_H
#define SEQUENCESTACK_H
#include <iostream>
#include <assert.h> // 断言
using namespace std;
template<typename T>
class SequenceStack
{
private:
int size;
int top; // 栈顶指针
T * contain;
public:
SequenceStack():size(0),top(-1),contain(NULL){}
SequenceStack(int MaxSize);
void Push(T& element);
T& Pop();
T& GetTop();
bool IsEmpty();
void MakeEmpty(); // 置栈为空
};
//
template<typename T>
SequenceStack<T>::SequenceStack(int MaxSize)
{
size = MaxSize;
top = -1; // 空栈
contain = new T[size]; // 分配空间
}
template<typename T>
void SequenceStack<T>::Push(T& element)
{
assert(top != size-1);
contain[++top] = element;
}
template<typename T>
T& SequenceStack<T>::Pop()
{
assert(top!=-1);
return contain[top--];
}
template<typename T>
T& SequenceStack<T>::GetTop()
{
assert(top!=-1);
return contain[top];
}
template<typename T>
bool SequenceStack<T>::IsEmpty()
{
return top==-1;
}
template<typename T>
void SequenceStack<T>::MakeEmpty()
{
top = -1;
}
#endif
顺序栈
最新推荐文章于 2023-10-20 21:42:37 发布