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

[特殊字符] 栈与队列基础知识全面解析

一、栈(Stack)理论基础

1.1 栈的基本特性

栈是一种后进先出(LIFO, Last In First Out)的数据结构,操作只在栈顶进行。

// 栈的基本操作stack<int>st;st.push(1);// 入栈st.push(2);inttop=st.top();// 查看栈顶元素:2st.pop();// 出栈,移除2boolempty=st.empty();// 判断栈是否为空

1.2 C++中栈的实现原理

重要概念:栈在C++中不是容器,而是容器适配器(container adapter)

// C++中栈的底层实现std::stack<int>st1;// 默认使用deque作为底层容器std::stack<int,std::vector<int>>st2;// 指定vector作为底层容器std::stack<int,std::list<int>>st3;// 指定list作为底层容器

栈的底层容器选择

  • deque(默认):双向队列,内存非连续
  • vector:动态数组,内存连续
  • list:双向链表,内存非连续

1.3 STL栈的实现版本

STL版本特点使用场景
HP STL第一个实现版本,开源历史学习
PJ.Plauger STLVisual C++采用,不开源Windows开发
SGI STLGCC采用,开源,可读性高Linux开发

SGI STL中栈的关键特性

  • 不提供迭代器(不能遍历)
  • 不支持随机访问
  • 对外提供统一接口,底层可插拔

二、队列(Queue)理论基础

2.1 队列的基本特性

队列是一种先进先出(FIFO, First In First Out)的数据结构。

// 队列的基本操作queue<int>q;q.push(1);// 入队q.push(2);intfront=q.front();// 查看队首元素:1q.pop();// 出队,移除1boolempty=q.empty();// 判断队列是否为空

2.2 C++中队列的实现原理

队列也是容器适配器

// C++中队列的底层实现std::queue<int>q1;// 默认使用deque作为底层容器std::queue<int,std::list<int>>q2;// 指定list作为底层容器

队列的底层容器要求

  • 必须支持push_back()(入队)
  • 必须支持pop_front()(出队)
  • 必须支持front()(查看队首)

2.3 常见问题解答

Q1:栈/队列是容器吗?
A:不是。它们是容器适配器,底层使用其他容器实现。

Q2:栈/队列支持遍历吗?
A:不支持。它们不提供迭代器,只能通过pop()逐个访问。

Q3:栈/队列在内存中连续吗?
A:取决于底层容器。默认用deque,内存不连续;如果用vector则连续。


三、栈与队列的相互实现

3.1 用栈实现队列(LeetCode 232)

classMyQueue{private:stack<int>stIn;// 输入栈stack<int>stOut;// 输出栈public:MyQueue(){}// 入队:直接压入输入栈voidpush(intx){stIn.push(x);}// 出队intpop(){// 如果输出栈为空,把输入栈所有元素导入if(stOut.empty()){while(!stIn.empty()){stOut.push(stIn.top(
http://www.jsqmd.com/news/284568/

相关文章:

  • 医疗器械包装运输验证标准:GB/T4857系列标准
  • java_ssm7特产农产品网上商城的设计与实现_idea项目源码
  • java_ssm115计算机系统在线考试平台_idea项目源码
  • java_ssm8中药中草药商城 供求信息管理系统_idea项目源码
  • 小迪安全2023-2024|第102天:漏洞发现-漏扫项目篇Poc开发Yaml语法插件一键生成匹配结_笔记|web安全|渗透测试|
  • C++中string与char的全面解析
  • 如何搭建自动化测试框架?
  • 从Java基础到微服务架构:互联网大厂面试三轮问答实录
  • java_ssm2家用二手电器回收系统
  • java_ssm116课程在线学习评测教学系统智慧学伴服务平台开发_idea项目源码
  • EasyGBS打造智慧机场一体化智能监管体系
  • 2026年北京周边诚信的加湿系统专业加盟公司,如何选择?
  • java_ssm3Web的篮球CBA联赛信息管理系统
  • 2026年资质齐全的专升本辅导机构,哈尔滨共创专升本值得关注!
  • java_ssm117超市在线配送管理系统_idea项目源码
  • java_ssm1 高校学生班费管理系统
  • 三星岩意奢岩板专业吗,从工艺到服务全面探究
  • java_ssm10乡村小学校园官网_idea项目源码
  • 620-3033处理器模块
  • 2026年广州有实力的Databricks公司排名
  • java_ssm118足球联赛管理系统 商城_tdl2g--论文
  • java_ssm11特色铁艺家居家具商城销售系统的设计与实现_idea项目源码
  • 性能测试:测试常见的指标
  • 葫芦岛市连山龙港南票兴城绥中建昌英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜
  • 2026年全国重型设备搬运公司哪家靠谱?多家厂家深度解析 实用指南
  • 接口测试用例设计
  • 南宁市青秀兴宁西乡塘江南良庆邕宁英语雅思培训辅导机构推荐;2026权威出国雅思课程中心学校口碑排行榜
  • 621-0000模拟输入模块
  • 621-0010-AR模拟输出模块
  • 实例分割loss示例