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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Single Linked List 相比较另一个基本的数据结构array,linked list有几个优势:尺寸...
    dol_re_mi阅读 8,221评论 0 3
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,959评论 2 36
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,611评论 1 13
  • 遇到一只小兔兔 小兔兔白又白 两只黑耳朵竖起来 三瓣瓣嘴嘴啃菜菜 小兔兔真可爱 小娃娃好奇怪 蹑手蹑脚把你追 不想...
    沙飞舞阅读 232评论 0 1