微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【数据结构】 栈

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

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

包括

入栈(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

原文地址:https://www.jb51.cc/datastructure/382487.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐