栈的顺序存储结构
- 格式:doc
- 大小:217.55 KB
- 文档页数:14
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
填写图片摘要(选填)
c++模板类实现 栈的数组存储结构:
template
struct Stack{
int top;
T *ele;
};
实现的类:
填写图片摘要(选填)
具体函数的实现:
template
Mystack::Mystack() //构造函数
{ s = new Stack;
s->ele = new T[Max];
}
template
Mystack::~Mystack() //析构函数
{
delete s;
delete []s->ele;
}
template
void Mystack::MakeNull() //栈置空
{
s->top = Max;
}
template bool Mystack::IsEmpty() //判空
{
if(s->top > Max-1)
return true;
else
return false;
}
template //返回当前栈顶元素
T Mystack::GetTopEle()
{
if(IsEmpty())
return NULL;
else
return s->ele[s->top];
} template
void Mystack::Pop() //删除栈顶元素
{
if(IsEmpty())
cout<<"Empty !"< else s->top=s->top+1; } template void Mystack::Push(T x) //入栈 { if(s->top==0) cout<<"Full !"< else{ s->top--; s->ele[s->top]=x; } } template void Mystack::DisplayStack() //打印栈 { cout<<"输出栈:"; int i=s->top; while(s->ele!=NULL&&i { cout< i++; } cout< } main函数的实现: 填写图片摘要(选填) 可运行程序代码: #include #define Max 100 using namespace std; template struct Stack{ int top; T *ele; }; template class Mystack{ public: Mystack(); ~Mystack(); void MakeNull(); bool IsEmpty(); T GetTopEle(); void Pop(); void Push(T); void DisplayStack(); private: Stack *s; }; template Mystack::Mystack() //构造函数 { s = new Stack; s->ele = new T[Max]; } template Mystack::~Mystack() //析构函数 { delete s; delete []s->ele; } template void Mystack::MakeNull() //栈置空 { s->top = Max; } template bool Mystack::IsEmpty() //判空 { if(s->top > Max-1) return true; else return false; } template //返回当前栈顶元素 T Mystack::GetTopEle() { if(IsEmpty()) return NULL; else return s->ele[s->top]; } template void Mystack::Pop() //删除栈顶元素 { if(IsEmpty()) cout<<"Empty !"< else s->top=s->top+1; } template void Mystack::Push(T x) //入栈 { if(s->top==0) cout<<"Full !"< s->top--; s->ele[s->top]=x; } } template void Mystack::DisplayStack() //打印栈 { cout<<"输出栈:"; int i=s->top; while(s->ele!=NULL&&i { cout< i++; } cout< } int main() { Mystack news; int i; news.MakeNull(); for(int i=0;i<30;i++) news.Push(i); news.DisplayStack(); cout<<"入栈:"; cin>>i; news.Push(i); news.DisplayStack(); cout<<"栈顶元素出栈"< news.DisplayStack(); system("pause"); return 0; } 欢迎访问我的博客:/u/5066584704