- 博客(5)
- 收藏
- 关注
原创 逆波兰表达式包含了中缀表达式转后缀表达式
4)遇到运算符时,比较其与s1栈顶运算符的优先级: (1)如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;(2)否则,若优先级比栈顶运算符的高,也将运算符压入s1;5)遇到括号时: (1)如果是左括号“(”,则直接压入s1 (2)如果是右括号“)”,则依次弹出s1栈顶的运算符,并压入s2,直到遇到左括号为止,此时将这一对括号丢弃 6)重复步骤2至5,直到表达式的最右边 7)将s1中剩余的运算符依次弹出并压入s2 8)依次弹出s2中的元素并输出,结果的逆序即为中缀表达式对应的后缀表达式T。
2024-11-19 15:21:05
274
原创 使用栈完成计算一个表达式的结果
3.2如果符号栈有操作符,就进行比较,如果当前的操作符的优先级小于或等于栈中的操作符,就需要从数栈中pop出两个数,从符号栈中pop出一个符号,进行运算,将得到结果,入数栈,如果当前的操作符的优先级大于栈中的操作符,就直接入符号栈。4.当表达式扫描完毕,就顺序的从数栈和符号栈中pop出相应的数和符号,并运行。1.通过一个index值(索引),,来遍历我们的表达式。3.如果发现扫描到的是一个符号,纠纷以下结果。3.1如果发现当前的符号栈为空,就直接入栈。例:3+2*6-2=13。
2024-11-14 10:08:53
165
原创 分析双向链表
单向链表查找方向只能是一个方向,而双向链表可以向前或着向后查询。单链表不能自我阐述,需要靠辅助节点,而双向链表,可以自我删除。遍历双和单链表一样,只是可以向前,也可以向后遍历。直接找到这个要删除的节点,例如:temp。因为时双线链表,可以实现链表的自我删除。添加(默认添加到双向链表末尾)先找到双向链表的最后这个点。修改思路和原理同单链表一样。
2024-11-12 14:05:29
498
原创 单链表的反转和如何反向打印链表(不改变原来链表的结构)
思路:1.先定义一个空的节点reverseHead=new Herolist();2.从头到尾遍历原来的链表,没遍历一个节点,就将其取出,并放在新的链表reserveHead的最前面,每次来一个节点都换一下reserveHead.next3.原来的链表的head.next = reserveHead.next。
2024-11-06 15:50:06
179
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人