数据结构学习笔记(二)

4 栈和队列

栈和队列都是动态集合,且在其上进行DELETE操作所移除的元素是预先设定的。在栈(stack)中,被删除的是最近插入的元素:栈实现的是一种后进先出(last-in, first-out, LIFO)策略。类似地,在队列中(queue)中,被删除的总是在集合中存在时间最长的那个元素:队列实现的是一种先进先出(first-in, first-out, FIFO)策略。

4.1 栈

栈的概念

一种特殊的线性表,只允许从一端插入和删除数据

特点:后进先出(last-in,first-out,LILO)

顺序栈

顺序栈是栈的顺序实现。顺序栈是指利用顺序存储结构实现的栈 。

采用地址连续的存储空间(数组)依次存储栈中数据元素,由于人栈和出栈运算都是在栈顶进行,而栈底位置是固定不变的,可以将栈底位置设置在数组空间的起始处;栈顶位置是随入栈和出栈操作而变化的,故需用一个整型变量top来记录当前栈顶元素在数组中的位置。

共享栈

一个数组实现两个栈

原理

既然是两个栈共享一段空间,向中间靠拢,数组两端表示两个栈底,栈顶一直向中间靠近。

应用场景

两个栈空间需求有相反的关系,也就是一个增长一个缩短的场景。

链式栈

链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。

头插头删

栈的应用
括号匹配
逆波兰表达式
迷宫算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值