栈和队列的简单总结

常用的数据结构有很多种,但大多数都是以数组或链表作为存储方式,数组和链表可以看做是数据存储的“物理结构”,栈和队列这两者属于逻辑结构,它们的物理实现既可以利用数组,也可以利用链表来完成。
栈是一种线性数据结构,它的元素是先进后出。出栈入栈的时间复杂度都是O(1),队列也是一种线性数据结构,队列中的元素只能先进先出,入队和出队的时间复杂度也是O(1)。
栈的应用场景:栈的输出顺序和输入顺序相反,所以经常用栈来回溯历史,实现递归的逻辑就是用栈的回溯方法。栈还有一个著名的应用场景就是面包屑导航,用户在浏览页面时可以轻松地回溯到上一级或更上一级页面。
队列的输入顺序和输出顺序相同,所以队列通常对于历史的回放,就是把历史重演一遍。例如在多线程中,争夺公平锁的等待队列,就是按照访问顺序来决定线程在队列中的次序的。再入网络爬虫实现网站抓取时,也是把待抓取的网站URL存入队列中,再按照存入的顺序来依次抓取和解析的。
双端队列可以实现栈和队列的双重特点,对双端队列来说,可以从队头入队或出队,也可以从队尾入队或出队,关于双端队列的更多细节请大家自行查阅资料以作了解。

发布了13 篇原创文章 · 获赞 10 · 访问量 401

猜你喜欢

转载自blog.csdn.net/qq_41426449/article/details/104474592
今日推荐