【数据结构与算法】表栈队列

参考

本文参考自《数据结构与算法分析C++描述》第三版,作者Mark Allen Weiss

1.表

1)链表可以解决什么问题?其一般思想是?

  • 表的数组实现带来的问题

    数组实现printList线性时间,findKth 常数时间,但插入和删除操作在整个表中发生时,时间开销最坏的情况是线性的O(N),数组就不合适。

  • 链表一般思想

    为避免插入和删除带来的线性开销,允许表可以不连续存储,否则表的部分或全部都要整体移动。

    下图表示了链表的一般性思想:

    一个链表

    以及插入和删除方法的一般性思想:

    insert a node

    rm a node

    当删除最后一项时,需要找到最后一项前面的项,才能去更新其next 链接到NULL,需要O(N),如果双向链表则只需要O(1)

    double linked nodes

2.栈
3.队列