栈的规则性设计 问题:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含小元素的min函数(时间复杂度应为O(1))。 保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。 解决: #使用辅助栈 class Solution: def __init__(self): ...
分类:
其他好文 时间:
2020-07-26 19:23:34
阅读次数:
68
垃圾回收(GC),主要关注三个点:如何进行回收,哪些内存需要回收,什么时候回收。 在上一个文章中介绍到了程序计数器,Java虚拟机栈,本地方法栈会随着线程生而生灭而灭,同时Java虚拟机栈中的栈帧会随着方法的进入和退出执行者入栈和出栈的操作。每一个栈帧分配多少内存在类结构确定的时候就已经确认(JIT ...
分类:
其他好文 时间:
2020-06-26 16:50:13
阅读次数:
60
栈 先进者后出,后进者先出,LIFO,典型的"栈"结构 从栈的操作特性上来看,栈是一种"操作受限"的线性表,只允许在一段插入和删除数据。 在功能上来说,数组和链表可以代替栈,但特定的数据结构是对特定场景的抽象, 数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,也就更容易出错 ...
分类:
其他好文 时间:
2020-06-07 10:47:55
阅读次数:
61
顺序栈 顺序栈定义 用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时 由于栈的操作的特殊性,还必须附设一个栈顶指针(top)来动态的指示栈顶元素在顺序栈中的位置。 通常以 top= -1 表示栈空。 结构体定义 struct SeqStack{ int MAX ...
分类:
其他好文 时间:
2020-05-28 21:55:28
阅读次数:
76
第三章主要讲了栈和队列,还提到了递归,栈是先进后出,而队列是先进先出的。栈只需要在栈顶操作,就可以实现入栈出栈的操作,而队列需要头指针和尾指针,出队时输出队头,入队时从队尾进入。不过要注意,出栈或者出队列,都要注意是否为空,而入栈和入队列是要注意是否已经满。还有没有定义的时候,要注意初始化,而且栈和 ...
分类:
其他好文 时间:
2020-04-26 22:33:32
阅读次数:
77
栈的定义 官方定义:栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作 小甲鱼的定义:所谓的栈,其实也就是一个特殊的线性表(顺序表、链表),但是它再操作上有一些特殊的要求和限制: 栈的元素必须"后进先出" 栈的操作只能再这个线性表 ...
分类:
编程语言 时间:
2020-04-23 12:19:37
阅读次数:
92
内联定义: 内联是为了节约函数的调用开销而诞生的,我们在调用一个普通函数的时候,存在的额外的开销(压栈、出栈)等。内联是让编译器使用内联的方式编译函数,在调用这个内联函数的时候,直接把这个函数展开,不存在压栈、出栈的操作 例子 对于内联函数传参还是按照正常的函数进行的,也会有函数的类型检查。但是宏定 ...
分类:
编程语言 时间:
2020-04-06 17:27:03
阅读次数:
57
B和H是两个水题C题是个模拟题,按照题目意思模拟就可以,只不过需要注意输出格式(指数行和底数行不能同时出现数字),G题也是个模拟题,题意是给出一个字符串,问能不能由上面那两个替换公式经过有限次替换得到,类似模拟括号匹配中栈的操作,不同的是不能出现紧挨的'ab'(可以是'ba')。 //H #incl ...
分类:
其他好文 时间:
2020-04-01 10:35:44
阅读次数:
77
1.栈的元素必须后进先出 2.栈的操作只能在线性表的表尾进行 3.对于栈,栈的表尾称为栈顶(top),相应的表头称为栈底(bottom)。 栈的插入操作(push)叫进栈,也叫压栈,入栈。 栈的删除操作(Pop),叫出栈,也叫弹栈。 //栈基本操作 //栈的顺序存储结构 #define STACK_ ...
分类:
其他好文 时间:
2020-03-14 12:51:19
阅读次数:
58
五种编程语言解释数据结构与算法—链式栈 [toc] 1、栈的链式存储结构介绍 1.1、逻辑结构示意图 == 栈的链式存储结构与单链表相似,并且所有的操作都在表头进行 == 对于链式栈的操作与单链表基本一致,就不再一一叙述了。 2、栈的应用 2.1、括号匹配问题 2.2、表达式求值问题 2.2.1、三 ...
分类:
编程语言 时间:
2020-03-06 17:28:27
阅读次数:
84