【计算机408】数据结构 | 队列

发布时间:2026/10/5 10:24:14
【计算机408】数据结构 | 队列 一、前言本篇为数据结构的第五讲队列队列是先进先出的线性表允许删除的叫队头允许插入的叫队尾二、顺序队列循环队列1. 假溢出问题当不断出队时front向后移动数组前面会空出大量空闲位置但rear走到数组末尾后就算数组前面有空位也无法继续入队看起来 “满了”实际空间并没有用完这就是假溢出。2.循环队列判空、判满的3种方法空队列条件Q.rear Q.front满队列条件Q.rear Q.front牺牲一个空间引入一个标志变量区别空和不空使用计数器3. 循环队列入队入队a2,a1,a0核心代码if((rear 1) % maxSize front){ resize(); } rear (rear 1) % maxSize; data[rear] x;出队出a1,a0核心代码if(empty()) throw outOfRange(); // 若队列为空则无元素出队抛出异常outOfRange()。 front (front 1) % maxSize; return data[front];取队头核心代码if(empty()) throw outOfRange(); // 若队中无元素则抛出异常outOfRange() return data[(front 1) % maxSize]; // 取队首元素返回队首元素数值三、链队列1.入队核心代码Node *p new Node(value,top); top p; //将值为value的元素推入栈中2.出队核心代码if(empty()) throw outOfRange(); //若为空栈则无法出栈元素则抛出异常outOfRange() Node *p top; T value p-data; top top-next; delete p; //将栈顶元素出栈并返回元素值。 return value;3.取栈顶元素核心代码if(empty()) throw outOfRange(); // 若为空栈无法返回栈顶元素则抛出异常outOfRange() return top-data; // 取栈顶操作返回栈顶元素值4.求栈中元素个数核心代码Node *p top; int count 0; while(p){ count; p p-next; } return count;5.清空栈核心代码Node *p; while(top ! NULL){ // 将栈中元素逐一出栈并释放空间。 p top; top top-next; delete p; }四、总结本文围绕队列重点讲解了顺序队列循环队列与链队列两种实现方式并复刻了核心操作与关键细节。在顺序队列循环队列部分先解决了假溢出问题。同时针对循环队列判空与判满条件相同Q.rear Q.front的难点介绍了三种常用方法。最后给出了入队、出队和取队头操作的核心代码。在链队列部分我们基于链表实现了队列避免了顺序存储中可能出现的假溢出和空间浪费问题。总的来说顺序队列循环队列适合元素数量可预估、追求较高空间利用率的场景链队列则更灵活适合元素数量动态变化、需要频繁插入和删除的场景。理解两者的区别与适用场景有助于在实际开发中做出合理选择。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询