认识栈和队列

栈的概述:

栈(stack)又被称为堆栈,它是一种只允许在一端(一般是表尾)进行插入和删除操作的线性表。
作为一种特殊的数据结构,由于栈被限定只能在尾进行插入和删除操作。

栈与线性表之间的关系:

线性表
●线性表是计算机科学中最基本的数据结构之一,它是由一系列数据元素组成的有限序列,其中每个元素都有一个前驱和后继(除了第一个元素没有前驱,最后一个元素没有后继)。

●栈是一种特殊的线性表,它同样由一系列数据元素组成,但是栈的操作受到限制,只允许在一端(称为栈顶)进行插入(压栈,push)和删除(弹栈,pop)操作。栈遵循后进先出(LIFO,Last In First Out)的原则。

栈可以通过以下两种方式实现:

1.顺序表实现栈
2.链表实现栈

链表实现栈:
链表使用节点来存储数据元素。每个节点包含数据部分和指向下一个节点的引用。在链表实现栈时,我们通常将链表的头节点作为栈顶。

括号匹配问题及解题思路:

1.创建一个栈用来存储左括号

2.从左往右遍历字符串,拿到每一个字符

3.判断该字符是不是左括号,如果是,放入栈中存储

4.判断该字符是不是右括号,如果不是,继续下一次循环

5.如果该字符是右括号,则从栈中弹出一个元素t;

6.判断元素t是否次nu11,如果不是,则证明有对应的左括号,如果不是,则证明没有对应的左号

7.循环结束后,判断栈中还有没有剩余的左括号,如果有,则不匹配,如果没有,则匹配.

下面做一个练习:判断字符串”(a+b)*(c-d)”字符串中的括号是否匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值