数据结构——3、栈和队列
1.1.1 *栈和队列*
1.1.1.1 *结构图*
数组和链表可以看成数据存储的物理结构
栈和队列可以看成数据存储的逻辑结构,可以利用数组进行实现,也可以利用链表进行实现
栈:先入后出,包括栈底和栈顶
不管是出栈还是入栈,时间复杂度都是O(1)
队列:先入先出,包括队头和队尾
循环队列:用数组的方式实现循环队列,用来维持队列容量的恒定
不断的进行入队和出队操作,如果队列还剩下最后两个元素,要插入新元素:
新元素不能插入到队尾中,因为队列容量恒定,可以直接插入到队头,让队尾指针指向队头的这个元素。物理存储上,队尾位置也可以在队头之前
当(队尾下标+1)%数组长度=队头下标,队列就真的满了
即队尾与队头相隔1位,因为队尾永远不指向具体元素,只指向空,队列最大容量比数组长度小1,
优先队列:遵循的不是先入先出,而是谁的优先级最高,谁先出列,是基于二叉堆实现的