【数据结构】 栈

前端之家收集整理的这篇文章主要介绍了【数据结构】 栈前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

栈结构,通俗易懂,特点:先进后出,后进先出。

以下,仅对于栈结构常用的操作进行实现

包括

入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop)

#include<iostream>
usingnamespacestd;

template<classT>
classStack
{
public:
Stack(Tsize)//初始化数组大小
:top(0)//栈顶指针,_size(size)
{
_array=newT[size];//top指向最后一个元素时,再往下跳会越界,所以多开一个
}

~Stack()
{
if(_array)
{
delete[]_array;
}
}

public:
voidPush(constTval)
{
if(top>=_size)
{
cout<<"overflow"<<endl;
return;
}
else
{
_array[top]=val;
top++;
}
}

TPop()
{
Tret;
if(top<0)
{
cout<<"underflow"<<endl;
return-1;
}
else
{
top--;
ret=_array[top];
}
returnret;
}

boolisEmpty()
{
returntop==0;
}

TTop()
{
if(!isEmpty())
{
return_array[top-1];
}
else
{
cout<<"error:stackisempty!"<<endl;
}
}

voidShow()
{
if(isEmpty())
{
cout<<"stackhasnodata!"<<endl;
return;
}
for(size_ti=0;i<top;i++)
{
cout<<_array[i]<<"";
}
cout<<endl;
}

private:
size_ttop;
size_t_size;
T*_array;
};

voidTest()
{
Stack<int>stk(5);

stk.Push(1);
stk.Push(2);
stk.Push(3);
stk.Push(4);
stk.Push(5);

stk.Show();
cout<<stk.Top()<<endl;

cout<<stk.Pop()<<endl;
cout<<stk.Pop()<<endl;
cout<<stk.Pop()<<endl;

cout<<stk.Top()<<endl;
stk.Show();

}

intmain()
{
Test();

system("pause");
return0;
}

栈结构是最简单的数据结构,很多数据结构都会用到栈结构,所以简单的栈结构常用的操作需掌握。


若有纰漏,欢迎指正

本文出自 “Vs吕小布博客,请务必保留此出处http://www.jb51.cc/article/p-mnwevkyp-ms.html

猜你在找的数据结构相关文章