1.Stack
这节课主要介绍了stack(堆栈)这一数据结构 这一结构的主要方法
上图的左边就是stack的可视化结构。可以看出stack有着“后进先出”的特性,优先对最新加入的对象进行操作。
stack可以用两种底层数据结构实现。一个是linked list(单向),元素个数无限制。一个是数组array,元素有上限。
(在运用array实现stack所要考虑的一些方面:
1.overflow 或者underflow。
2.加入的item是不是null。
3.是否被pop的对象的引用被清除)
2.Resizing an array
当用数组去实现栈的时候,会出现溢出的情况。此时选择创建一个double长度的新数组然后copy,而不是一次加一个长度,因为这样可以减少时间复杂度。同理减少元素的时候,如果数组元素少于一半直接新数组长度减半。
两种实现方式的对比
平摊分析中(amortized analysis)执行一系列数据结构操作所需要的时间是通过执行的所有操作求平均而得出的
3.Queues
也可以用array和linked-list实现
讲了generics(泛型)和iterator
bag的api