队列
队列
是一种先进先出(FIFO)线性表。只允许在 其一端删除元素,即队头(front),只允许在其另一 端插入元素,即队尾(rear)。
入队时需先修改入队指针(队尾指针) rear = = (rear +1)% QueueMaxSize
出队时需要修改队头指针 front == (front +1)% QueueMaxSize
rear 指出实际队尾元素所在的位置,front 指出实际队头元素所在位置的前一个位置, front 指向的位置不存放数据元素.
队列的操作判断条件:
初始时, 队列为空, 有 front=0 rear=0
队空: front==rear 1 约定 rear 指出实际队尾元素所在的位置, front 指出实际队头元素所在位置的前一个位置
队满: (rear+1)%QueueMaxSize == front
入队: (rear+1)% QueueMaxSize == front 然后修改入队指针(队尾指针) rear = (rear +1)% QueueMaxSize 最后将元素入队。
出队:front == rear 然后修改队头指针 front = (front +1)% QueueMaxSize 最后将元素出队。
求队长:若存储队列的数组的长度为N,则队列长度(即所含元素个数)为: (N+rear-front)%N
队列的存储:
队列的顺序存储:在顺序队列中插入和删除,不需要比较和移动任何元素,只需修改队尾和队首指 针,并向队尾写入元素或从队首取出元素, 时间复杂度为:O(1)
队列的链式存储: 在链队中插入和删除,不需要比较和移动任何元素,只需修改个别相关指 针和进行结点的动态分配或回收操作 ,时间复杂度为:O(1)