Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues

1.Stack

这节课主要介绍了stack(堆栈)这一数据结构   这一结构的主要方法


Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues_第1张图片

上图的左边就是stack的可视化结构。可以看出stack有着“后进先出”的特性,优先对最新加入的对象进行操作。

stack可以用两种底层数据结构实现。一个是linked list(单向),元素个数无限制。一个是数组array,元素有上限。

(在运用array实现stack所要考虑的一些方面:

1.overflow 或者underflow。

2.加入的item是不是null。

3.是否被pop的对象的引用被清除)


2.Resizing an array

当用数组去实现栈的时候,会出现溢出的情况。此时选择创建一个double长度的新数组然后copy,而不是一次加一个长度,因为这样可以减少时间复杂度。同理减少元素的时候,如果数组元素少于一半直接新数组长度减半。

两种实现方式的对比


Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues_第2张图片

平摊分析中(amortized analysis)执行一系列数据结构操作所需要的时间是通过执行的所有操作求平均而得出的


3.Queues


Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues_第3张图片

也可以用array和linked-list实现


讲了generics(泛型)和iterator

bag的api

Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues_第4张图片

你可能感兴趣的:(Cousera 公开课Princeton Algorithms Part 1笔记:Stakes and Queues)