学习笔记之数据结构的栈与队列

共同点

 栈和队列的访问是受限制的,即在特定时刻只有一个数据项可以被读取或删除

特点:
	后进先出
实现:
    主要机制可用数组来实现,也可以用链表来实现
查询:
    栈只允许访问一个数据项:即最后插入的数据
基本操作:
    出栈(Pop)、入栈(Push),还有其他扩展操作,如查看栈顶元素,判断栈是否为空、是否已满,读取栈的大小

队列

特点: 
	先进先出
删除: 
	环绕式处理:
    	与栈不同的是,队列的数据项并不都是从数组的第一个下标开始,移除数据项只能从队头移除,然后队头指针后移.当队尾指针移到最后的位置时,让队尾指针回到数组的第一个位置.

优先级队列

与普通队列不同之处:
    数据项按关键字的值排序,数据项插入的时候会按照顺序插入到合适的位置
实现:
    优先级队列的内部实现可以用数组或者一种特别的树——堆来实现。
位置:
    使数组的第一个元素永远是队尾,数组的最后一个元素永远是队头,为什么不是相反的呢?因为队头有移除操作,所以将队头放在数组的末端,便于移除,如果放在首段,每次移除队头都需要将队列向前移动
插入:
    设置了一个基准点,认为元素到里基准点的距离越近则优先级越高,如设置的基准点为2,3到2的距离就是|3-2|=1

双端队列: 队列和栈的综合体

特点:
    队列的每一端都可以进行插入和移除操作
注:
   1.限制双端队列的一段只能插入,而另一端只能移除,就变成了平常意义上的队列
   2.限制双端队列只能在一端进行插入和移除,就变成了栈

转:详细讲解,具体实现
数据结构之栈
数据结构之队列

猜你喜欢

转载自blog.csdn.net/weixin_42393758/article/details/86141655