数据结构——循环队列

                               循环队列

        基于链式储存结构的队列优点和链式线性表一样,不需要依靠多次移动数组元素来保持数据结构的稳定性,但是缺点也很明显,就是每添加一个元素就需要申请一次内存。而基于顺序储存结构的队列可以预先申请一块内存,每添加一个元素时只需要把节点放在数组的末尾就可以了,但取队首元素时就比较复杂了,需要把从第二个元素开始,都向前移动一位。
       循环队列可以在保证少移到数组元素的同时不需要频繁申请内存。说到底循环队列还是基于顺序储存结构实现的,但是却把数组的逻辑结构想象成一个环状结构,循环队列是没有绝对的队首和队尾之分的,只有两个指针分别指向逻辑的队首和队尾。像普通顺序储存结构的移动数组元素的过程用移动指针来实现,其他移动指针也并不是真正的移动,因为这两个指针就是两个变量,保存的是队首和队尾元素在数组中的真正下标,也许在某个时候,队首的下标比队尾下标还要大,这时候,队列真正使用的数组部分是数组的后半部分的一点和前半部分的一点,而数组的中间却是空着的。这样就结合基本顺序和链式储存结构的优点,但也是有其缺点的,缺点也很明显,就是循环队列的队列最大容量是固定的,在使用循环队列时,可以先稍微大一点估计所需要的容量,再申请一个需要的循环队列。
      下面的代码就是实现循环队列

#pragma once
#ifndef SEQUEUE_H
#define SEQUEUE_H
#include "queue.h"
namespace dataStructure 
{
	template<typename T
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构中的表可以分为以下几种类型:线性表、顺序表和链表。线性表是数据结构中最简单的基本数据结构,常见的线性表有数组、链表、栈和队列。顺序表是一种使用一段连续的物理地址存储数据元素的线性结构,通常使用数组来实现。顺序表又可以分为静态顺序表和动态顺序表,其中静态顺序表使用定长数组存储,动态顺序表使用动态分配的数组存储。链表是一种使用指针将数据元素链接起来的线性结构,它可以分为单链表、双链表和循环链表。在链表中,插入和删除操作的时间复杂度为O(N)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据结构——四种最常见的线性表](https://blog.csdn.net/zdl_01/article/details/78806000)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [数据结构三大表](https://blog.csdn.net/weixin_43249530/article/details/97257521)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值