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

洛阳霞光高端定制网站建设东莞网站开发报价

洛阳霞光高端定制网站建设,东莞网站开发报价,北京商场排名,怎么登录企业网站引导 今天我们开始学习栈与队列的内容#xff0c;我觉得栈并不难#xff0c;所以篇幅也就不会那么多了。在虚拟空间中#xff0c;栈是用户空间中的一种数据结构#xff0c;它主要用于保存局部变量。那么问题来了#xff0c;为什么用栈来保存局部变量#xff0c;不用别的数…引导 今天我们开始学习栈与队列的内容我觉得栈并不难所以篇幅也就不会那么多了。在虚拟空间中栈是用户空间中的一种数据结构它主要用于保存局部变量。那么问题来了为什么用栈来保存局部变量不用别的数据结构呢堆数组链表不可以吗 栈 我们知道栈的特点就是先进后出后进先出。其实我们可以这样定义满足先进后出后进先出操作特性的就是栈。因此栈没有固定的存储形式比如数据是需要存储地址连续链表存储地址可以不连续。栈可以用数组或链表都可以实现只要它满足先进后出后进先出操作特性即可。 因此栈就是一个操作受限只能从一端压栈出栈的线性表。 栈的复杂度 栈的操作只有入栈和出栈并且只涉及到栈顶的元素。所以它的复杂度都为O(1)。如图 栈的应用 特定的数据结构是对特定场景的抽象。那么有些问题用栈来处理肯定会比较方便。 栈在表达式中的使用 在《程序语言设计基础》中有关于表达式知识点比如一个35*8-6的表达式你会怎么设计让计算机去识别计算呢记得以前写过类似的程序现在想想还有很多的优化空间。 在表达式中有中缀表达式前缀表达式后缀表达式3种。它们的分析方式也不相同。有兴趣的可以去了解一下我的另一篇文章【献给过去的自己】栈实现计算器(C语言)-CSDN博客。 栈在函数调用中的应用 正如我们在开头引入的话题为什么局部变量要保存在栈中这里有几点需要解释 局部变量保存在栈中这个栈是内存中实际存在的栈是真实的物理区。而我们全文所介绍的栈是一个数据结构是抽象的。要区分开两个栈。内存中的栈因为它的操作特性符合栈数据结构的特点所以称为栈区。栈区主要存储运行方法的形参、局部变量、返回值。由系统自动分配和回收。 那么我们为什么要将局部变量保存在栈区呢? 其实我们并不是必须要使用栈结构使用数组和链表也是可以的。可能稍微会麻烦点。函数之间调用变化的主要是作用域及生命周期。 当A函数进入B函数就不能再访问A函数中的局部变量了。 B函数返回A函数之后B函数中的局部变量就需要释放。 针对作用域和生面周期变化的我觉得栈可以很好的实现。进入一个函数时在栈中记录入口作用域界限之后进行压栈操作在该函数内部只能访问界限以内的数据。当退出函数时将入口以内的数据直接释放。 队列 队列和栈都是抽象的数据结构是一个操作受限的线性表。它的特点就是先进先出FIFO。 它的操作又入队将一个数据放到队尾和出队从队列头部取出一个数据。和栈相似如图 顺序队列 队列和栈一样都能用数组和链表来实现。用数组实现就是顺序队列用链表实现就是链式队列。我这里就简单用C语言实现一个顺序队列。 queue_len 100 int queue[queue_len]{0}; head0; tail0; //队空headtail; //堆满head0 tailqueue_len; bool enqueue (int item) {     if(tail queue_len head 0)         return false;     if(tail n)     {         int i 0;         for(i 0 ; i (tail - head) ; i)             queue[i] queue[headi];         queue[tail-head] item;         tail tail-head 1;         head0;     }     else     {         queue[tail] item     }     return true; } int dequeue() {     if(head tail)         return false;     return queue[head]; } 该实现方式出队和入队操作的复杂度都是O(1)。 循环队列 在上面的队列中当tail等于队列长度时就需要进行数据搬移。循环队列就是省去了这个操作。循环队列的难点就在于如何确定队列满和队列空 队列满(tail1 % queue) head 队列空headtail 堆满的判断方式会浪费数组中一个元素。故循环队列可按照下列实现 queue_len 100 int queue[queue_len]{0}; head0; tail0; //队空headtail; //堆满(tail1 % queue) head; bool enqueue (int item) {     if(((tail1) % queue_len) head)         return false;     queue[tail] item;     tail (tail1) % queue_len;     return true; } int dequeue() {     if(headtail)         return false;     int item queue[head];     head (head1)%queue_len     return item; } 队列的用途 队列一般用于缓存操作。比如消息队列线程池等都是使用了队列。但是队列的大小设置是需要我们关注的。我个人主要的考虑依据是在可接受的反应时间内将队列设置到最大。 总结 本节主要介绍了栈数据结构它具有先进后出后进先出的操作特点。以及栈的在表达式和函数调用上的应用。一定要区别栈数据结构和内存中的栈不是完全相同的概念。算是交际关系. 队列的概念并实现了队列和循环队列。以及队列大小设置的依据。
http://wiki.neutronadmin.com/news/293365/

相关文章:

  • 做网站别人输账号代码校园二手网站开发
  • 无锡工程建设中心网站南宁高端网站
  • 聊城网站设计公司建筑工程找工作哪个网站好
  • 网络公司网站建设报价南京网站建设一条龙
  • 企业网站推广的线上渠道有哪些咨询工程师
  • 网站视频提取软件appaso优化排名推广
  • 岳阳高端网站建设wordpress svg logo
  • 我想做一个网站怎么做的18款禁用软件app破解版
  • 最新网站建设软件有哪些传奇手游代理平台价格表
  • 阿里云虚拟机怎么做多个网站网站建设需要哪些人员
  • 长沙网站排名技巧浙江十大建筑公司排名
  • 英文网站建设模板下载湖南建设局网站
  • 珠海营销营网站建设网络规划设计师考海明码吗
  • 网站改版换域名产品运营推广方案
  • 国内做文玩的网站营业执照注册网站
  • 五百亿建站模板dede织梦建站教程
  • 设计网站排行不能用于制作网页
  • 网站开发用什么数据库做网站的主要任务
  • 不良网站正能量进入窗口html网站要怎么做
  • 开发网站做什么设计ui
  • 黑色网站模版php开发网站建设书籍
  • 佛山市官网网站建设企业网站域名注册免费
  • 做网站商城需要多少钱免费网页托管
  • 郑州知名网站建设公司网站建设与网页设计 视频教程
  • 北京免费发布企业信息网站深圳网页设计有限公司
  • 常见的电子商务网站有哪些海南新政策最新
  • 做电影网站如何买版权手机端原神
  • 查公司的网站有哪些广州市建筑股份有限公司
  • 全国 网站备案 数量全网推广系统
  • 永嘉网站制作哪家好书店网站建设可行性分析