开发者学堂课程【Go 语言核心编程 - 数据结构和算法:数据结构和算法_栈的出栈操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/627/detail/9855
数据结构和算法_栈的出栈操作
内容介绍:
一.出栈操作
二.栈的应用场景
一.出栈操作
1.重要的是入栈还有一个出栈,出栈刚好是反过来的,跟函数的签名很像,首先我们命名为 pop,出栈的时候不需要给值,出栈至少有两个返回值,一个你弹出的数是多少,
第二个有没有错误,第二个看图,这个图就是出栈,把栈顶的取出来,取出来的栈顶,要往下面移动一位,不能够不移动,不移动就会再次取的时候你还是栈顶。
2. 这个栈的就是 into,想又放 into,又放其他,可以写一个空间口,可以立一个空间口这样的数组,出栈先判断栈是否为空,如果 this.top 栈顶等于负一,那这个时候栈就不能再取了,就没有东西了,所以栈空,
这个时候就返回一个 return,比如说栈空,所以说提示一句话 println,,栈空,一但栈空,就 return 一个,错误,比如说栈空,你在取的时候就是判断 error 有没有错误,如果有错误,你就知道这个值也是不对的,就不用再去取它了,如果不等于空,你去取的时候就先取值再对 top.val 等于 this.arr。先取值再 top--。
3. 把栈顶的值先交给 top,首先让 this.top. 再 return val 就相当于没有错误,先把栈顶的值交给 val,然后 this top --,然后把值返回,我们已经入栈,先弹一个值出来,val.println然后出栈,弹值出栈,出栈的时候我们的val等于 stack top 但是这个地方还不能这样写,还得分一下,error 不管,然后等于我们的 stack.top 弹出来之后我们再请示一下,这时候弹出来的应该是先入五,先入的先出,后入的后出,栈顶弹出来了,弹出来过后这边一显示,显示4321,走一个,看效果,出栈一个五再打印四三二一,再出一个栈,我们把一个出栈再打一次,启动,再出一个栈还是一个五,这是再出一个栈没有出,出栈完了之后重新打一个空格,
然后看效果,先出一个五四三二一,再出一个三二一,会被报错,多弹一次,弹一个再弹一个,看一下效果,看一下情况是什么样子的,这样子的话栈就会有一个,再谈一个,栈的结果就是空栈,在空栈的情况下再弹一个就会报错。
4. stack.list 这句话就会出错,会报这句话弹不出来了,stack.list 这个弹不出来了,这说明我们这个栈出栈和入栈都是正确的,这时就把出栈和入栈都说完了,待会用栈来进行表达式的运算,我先把这个栈的案例先把大家板书一下,刚才我们就是用数组模拟一个栈,思路跟前面讲的大致相同,代码实现,具体来说是怎么走的整理出来了,结构体也出来了 出栈入栈也出来了这是核心的三个相关的操作。
二.栈的应用场景
1.子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序中。
2.处理递归调用:和子程序的调用类似,只是除了存储下一个指令的地址外,也将参数,区域变量等数据存入堆栈中。
3.表达式的转换和求值。
4.二叉树的遍历。
5.图形的深度优先(depth—first)搜索法。