数据结构之栈

本文介绍了栈的基本概念和操作,包括进栈和退栈算法,并探讨了栈在深度优先搜索(DFS)中的应用。DFS是一种图算法,用于遍历或搜索树或图,通常使用栈来实现。文章通过例子阐述了DFS的工作原理及其与广度优先搜索(BFS)的区别,并提及了一个使用DFS解决的马的覆盖点问题。
摘要由CSDN通过智能技术生成

队列,栈,堆,三大数据巨佬

因为这个也简单不常用

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

定义:栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法

栈可以看成一个火车栈,先进先出

在这里插入图片描述


基本算法
1.进栈(PUSH)算法

①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
②置TOP=TOP+1(栈指针加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);

2.退栈(POP)算法

①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②X=S(TOP),(退栈后的元素赋给X):
③TOP=TOP-1,结束(栈指针减1,指向栈顶)。

基本函数

定义了int类型的栈

stack<int> s;

弹出栈顶

s.pop(); 

访问栈顶

int x=s.top();

进栈

int x;
s.puhs(x);

判断栈是否为空

if(s.empty()){
   
	cout<<1;
}
实现

会在一个专栏去讲


栈这样的特性,有了一个跟bfs名字的相似的名字的算法

  • <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值