栈的概述:
栈(stack)又被称为堆栈,它是一种只允许在一端(一般是表尾)进行插入和删除操作的线性表。
作为一种特殊的数据结构,由于栈被限定只能在尾进行插入和删除操作。
栈与线性表之间的关系:
线性表
●线性表是计算机科学中最基本的数据结构之一,它是由一系列数据元素组成的有限序列,其中每个元素都有一个前驱和后继(除了第一个元素没有前驱,最后一个元素没有后继)。
栈
●栈是一种特殊的线性表,它同样由一系列数据元素组成,但是栈的操作受到限制,只允许在一端(称为栈顶)进行插入(压栈,push)和删除(弹栈,pop)操作。栈遵循后进先出(LIFO,Last In First Out)的原则。
栈可以通过以下两种方式实现:
1.顺序表实现栈
2.链表实现栈
链表实现栈:
链表使用节点来存储数据元素。每个节点包含数据部分和指向下一个节点的引用。在链表实现栈时,我们通常将链表的头节点作为栈顶。
括号匹配问题及解题思路:
1.创建一个栈用来存储左括号
2.从左往右遍历字符串,拿到每一个字符
3.判断该字符是不是左括号,如果是,放入栈中存储
4.判断该字符是不是右括号,如果不是,继续下一次循环
5.如果该字符是右括号,则从栈中弹出一个元素t;
6.判断元素t是否次nu11,如果不是,则证明有对应的左括号,如果不是,则证明没有对应的左号
7.循环结束后,判断栈中还有没有剩余的左括号,如果有,则不匹配,如果没有,则匹配.
下面做一个练习:判断字符串”(a+b)*(c-d)”字符串中的括号是否匹配
669

被折叠的 条评论
为什么被折叠?



