Stack Queue
2019-02-14 本文已影响0人
日光降临
1. 将1,2,3,4四个元素按顺序压入栈中,中间可以随时执行pop操作,
则从栈中pop的元素顺序可能有多少种
这么简单的一个题居然做错了,只好枚举出来:
4第一个被pop出来的情况
4 - 3 - 2 -1
3第一个被pop出来(1,2,3依次入站,然后3出栈),4入栈和出栈两个动作肯定是相连的
3 - 4 - 2 - 1
3 - 2 - 4 - 1
3 - 2 - 1 - 4
2第一个被pop出来(1,2,依次入站,然后2出栈)
2 - 1 - 3 - 4
2 - 1 - 4 - 3
2 - 3 - 1 - 4
2 - 3 - 4 - 1
2 - 4 - 3 - 1
1第一个被pop出来
1 - 2 - 3 - 4
1 - 2 - 4 - 3
1 - 3 - 2 - 4
1 - 3 - 4 - 2
1 - 4 - 3 - 2
在函数调用的过程中,操作系统使用函数调用栈来维护函数调用的状态。每个函数运行过程中有一段属于自己的栈帧结构,主要用来记录一些临时变量和主调函数的返回地址,这样当被调函数执行结束之后可以根据这个地址返回主调函数中,从而实现了函数调用的过程。实例化的对象一般存储在堆中
栈是一种线性的数据结构,其中特点是后进栈的元素会先出栈,先进栈的元素后出栈。在实际系统中,可以使用栈来维护函数调用的状态,非常有意义。使用链表模拟栈的过程中,链表的头部模拟栈顶,这样栈的push, pop, peek操作的时间复杂度都是O(1)