C++ 数据结构 队列Queue学习

队列Queue

1.queue也是线性表,可以用数组(由于假溢出的原因使用循环数组)和链表来实现
和stack不同的是,队列是FIFO的,就和现实中我们的排队一样;
stack只需要标记top下标,队列通过front和rear来标记队首和队尾。

2.主要操作有 1.出队 和 2.入队两个

数组中的话,已知MaxLength(数组长度)
  • 出队:front = (front + 1)% MaxLength
  • 入队: rear = (rear + 1) % MaxLength
  • 判断队列是否为空:front == rear
  • 判断队列是否为满:
    1. 增加一个变量:Size来标记队列元素或者bool flag值来标记最后一次操作是出队列还是进队列。判断队列为满时: rear == front && size== MaxLength or rear == front && flag = 进队列(比如是true)
    2.牺牲一个空间: 判断队列为满时条件:(rear+1)%MaxLength == front;
链表的话就比较简单

记录头结点和尾节点就好啦,增加删减节点操作和链表一样。

STL queue

  • member functions:

  • queue::back 队列的最后一个元素
  • queue::emplace也是入队列(c++11)
  • queue::empty是否为空
  • queue::front队列的第一个元素
  • queue::pop删去第一个,返回是void,注意
  • queue::push push(x)入队列
  • queue::size队列元素个数
  • queue::swap交换两个队列

应用(from leetcode ....):

  • 用队列实现栈的操作

你可能感兴趣的:(C++ 数据结构 队列Queue学习)