队列

特点:先进先出  有序

实现:数组(顺序存储)或链表(链式存储)  链表更优

 

 队列的基本实现图:

   第一个  没有存数据时头和尾的默认为 -1  front 头  rear 尾

  第二个   添加数据时 rear 尾加一  

  第三个   去掉数据时  front 头数据加一 向上移动

 

队列是怎么满足先进先出的?

使用指针 存入第一个数据时 rear +1  front 不变  

             当取数据时 front从 - 1,开始取数据  逐渐加一  指针向上移动 ,取出后,数据不能再次取,因为指针向上。

注意:front +1 代表头数据。

循环队列
/* 实现思路:front 头指针 从第一个元素开始开始 front = 0
rear 尾指针-也从 rear = 0开始 指向最后一个数据的下一个位置(默认有一个空间是空的)
队列满时:(rear+1% maxSize == front
队列为空时 : rear == front front 在获取前 进行加一 指到下一位 当front == rear时 指向空的空间)
获取有效数据: (rear+ maxSize -front% maxSize) 有效数据个数*/
在添加队列时 超出队列 return 打断 否则继续向下执行 rear指针指向到队列的第一个 导致判断为空 出现异常。

posted @ 2022-07-28 18:01  niao66  阅读(58)  评论(0)    收藏  举报