当前位置: 首页 > news >正文

东营网站建设公司 网络易唐山专门做网站

东营网站建设公司 网络易,唐山专门做网站,一般通过手机号加微信的好友,做网站怎么选空间什么是假溢出#xff1f; 当我们使用队列这种基本的数据结构时#xff0c;很容易发现#xff0c;随着入队和出队操作的不断进行#xff0c;队列的数据区域不断地偏向队尾方向移动。当我们的队尾指针指向了队列之外的区域时#xff0c;我们就不能再进行入队操作了#xff…什么是假溢出 当我们使用队列这种基本的数据结构时很容易发现随着入队和出队操作的不断进行队列的数据区域不断地偏向队尾方向移动。当我们的队尾指针指向了队列之外的区域时我们就不能再进行入队操作了而此时由于队头已经偏离原来位置也就意味着实际上队列并没有满。这种实际上还有空间但是却发生了溢出的现象就称为假溢出现象。 假设有以下队列初始元素为1、2、3、4、5队头元素是1队尾元素是5. 当我们弹出队头元素两次得到队列 这个时候top指针向右边偏移如果再进行入队操作我们会发现rear指针已经不能向后移动了而此时队列并没有满top前面还有空间。 这就是假溢出。 如何解决假溢出问题 为了避免假溢出问题我们需要对队列进行优化--循环队列。 对于前面的问题我们发现导致假溢出的主要问题就是尾指针rear不能指向可以存放空间的地址换句话来说就是不能指向前面已经出队了元素的地址。针对这一问题我们整个队列看成一个可以循环的环状结构指向队头队尾的指针往后走还能回到原来的位置。 这样一来前面已经出队元素的空间我们依旧可以存放元素也就解决了假溢出的问题。这里rear指向队尾元素的下一个元素。 模拟循环队列 首先假设我们队列的最大存储数据个数为k。 用一个数组来模拟循环队列并且初始化容量为k1,队头队尾指针都指向下标为0的元素地址 为什么容量要多一个呢 为了更好的区分队列为空和队列已满。 如何判断循环队列是否为空 if(toprear)为真则队列为空 如何判断循环队列是否为满 由于我们多开辟了一个元素的空间且这个空间不存放元素也就意味着如果已经存了k个元素此时的rear指向这个空的区域rear指向空间的下一个空间的元素被top指针指向。 if((rear1)%(k1)top)//真则队列为满 如何求得循环队列的元素个数 num(reark-top)%(k1)//num为循环队列元素个数 由于rear指针可能在top指针的前面所以我们不能直接使用rear-top. 那么我们可以这么想之所以rear会出现在top前面是因为rear已经走了一圈了假设只多走了一圈那么rear移动的总距离就是当前元素位置加队列长度top移动的距离就是当前下标。 力扣面试题 622. 设计循环队列https://leetcode.cn/problems/design-circular-queue/ 代码 typedef struct {int *val;int front;int back;int k;int size; } MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue *obj(MyCircularQueue *)malloc(sizeof(MyCircularQueue));obj-val(int*)malloc(sizeof(int)*(k1));obj-front0;obj-back0;obj-kk;obj-size0;return obj; }bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return ((obj-back)(obj-front)); }bool myCircularQueueIsFull(MyCircularQueue* obj) {return (((obj-back1)%(obj-k1))obj-front); } bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(myCircularQueueIsFull(obj))return false;obj-val[obj-back]value;obj-back(obj-back1)%(obj-k1);return true; }bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))return false;obj-front(obj-front1)%(obj-k1);return true; }int myCircularQueueFront(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))return -1;return obj-val[obj-front]; }int myCircularQueueRear(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))return -1;int kobj-k;return obj-val[(obj-backk)%(k1)]; }void myCircularQueueFree(MyCircularQueue* obj) {free(obj-val);obj-valNULL;free(obj);}
http://www.zqtcl.cn/news/985619/

相关文章:

  • 网页制作软件三剑客网站优化排名的方法
  • 购物网站开发背景及目的做百度推广网站咱们做
  • 漳州最专业的网站建设公司网站建设工作方案
  • 江西省建设厅网站官网网站备案期间可以用二级域名访问网站吗
  • 三丰云做网站步骤php网站建设视频教程
  • 赤峰网站开发公司wordpress电子商务主题 中文
  • 网站建设运营工作业绩怎样查看网站备案号
  • 江苏常州网站建设公司外贸网站建设盲区
  • 响应式网站设计教程wordpress 医院主题
  • 手机上怎么上传网站吗舟山做网站
  • 程序员做个网站要多少钱呢网站开发设计技术路线
  • 企业网站优化与推广哪个网站seo做的最好
  • 学做网站 软件合肥市建设投资有限公司
  • 网站开发优势用php制作一个个人信息网站
  • wordpress百度推送代码兰州网站关键字优化
  • 有了域名怎么建设网站在线crm免费将夜2
  • 网站建设 技术方案模板长沙手机网站公司
  • 游戏网站建设免费版百度只更新快照不收录网站
  • html小清新类型网站网站建设中应注意哪些问题
  • 网站开发技术和seo的联系精品课程网站建设 公司
  • 大型网站建设一般多少钱wordpress 调用百度前端公众库
  • 个人电脑做网站服务器网站地方网站域名用全拼
  • 我们网站在那里登陆后台系统管理成都app制作开发
  • 可以做问卷调查的网站仙居网站建设
  • 知名网站建设公司电话做一个小程序需要多少钱
  • 外贸找客户有什么网站个人如何做网站
  • 旅游项目网站开发ui界面设计分析
  • 企业建设网站没有服务器代理网页浏览
  • 深圳网站建设新闻网站建设营销的企业
  • 建筑设计网站软件排名工具