加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【数据结构】 栈

发布时间:2020-12-15 05:58:07 所属栏目:安全 来源:网络整理
导读:栈结构,通俗易懂,特点:先进后出,后进先出。 以下,仅对于栈结构常用的操作进行实现 包括: 入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop) #includeiostreamusingnamespacestd;templateclassTclassStack{public:Stack(Tsize)//初始化数组

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

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

包括:

入栈(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.52php.cn/article/p-mnwevkyp-ms.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读