• 第三章栈与队列总结


    第三章栈与队列总结

    栈的定义:

    限定仅在表尾进行插入或删除的线性表。   

    特殊名词:

    栈顶,栈底。

    特点:

    后进先出(LIFO)(例子:往一个盒子里放东西,只能从底部开始放,过一段时间后,只能从最顶端,一个一个往外拿)

    队列的定义:

    在表的一段插入元素,在另一端删除元素。

    特殊名词:

    队尾,队头。

    特点:

    先进先出(FIFO)(例如:排队时,先来的先买东西啥啥的)

    栈与递归:

    (注意返回地址、参数值)

    递归的本质:函数调用(自己调用自己)

    优点:结构清晰,程序易读

    缺点:每次调用都要生成工作记录,保持状态信息入栈;返回时要出栈,恢复状态信息;时间的开销大

    例子:分别用递归和叠代写的两个程序去输出10000个数据和100000个数据,递归在100000个数据下就崩溃了

    图例:

    这个表示函数的调用

    关于队列的一些问题:

    队列的操作与栈类似,不同的是,删除是在表的头部--队头进行

    队列是排队出入,因此要注意队列的两种存储表示,顺序表示和链式表示

    循环队列:

    最需要注意的是,怎么用到它的循环----指针Q.rear = (Q.rear+1)%X,x是最初设置的队列的长度,如果Q.rear = 0,就不会出现假溢出

    (原理就是利用数学中的模运算)

    那么问题来了,假溢出是啥?

    假溢出:超出数组分配的最大空间,无法继续插入新的队尾元素--因为数组越界而导致的程序的非法操作错误

    (受队尾入队,队头出队限制)

    链队:

    入队时需要将新的结点指向链尾,出队要将队尾的指针指向下一个元素后删除最后一个结点。

    大致的整体总结:

    二者都是相似的,但是要注意空间的分配,以防溢出的情况,注意指针的问题,以防删除后,成为野指针

    本周学习心态:

    逐渐对打代码有了新的认识,需要跟进,然后已经有了一定的信心,不是特别的抗拒了,希望在后面的学习中能够一直将心态调整好。

    但是在另外一道题仍然自闭了。

    下周目标:

    对题目进行思考,不怕烦,有问题就及时去解决

    还有不要自闭

    附录:对本周作业题的一些心得,发在另外一篇博客上,https://www.cnblogs.com/JeffKing11/p/10612567.html

  • 相关阅读:
    48、C++ Primer 4th 笔记,句柄类,继承,虚函数等的一个综合例子(未完)
    79、在linux的man手册当中,man(1)是什么意思?
    ASP.NET2.0 ObjectDataSource的使用详解(1)
    ndts 一个使用不多重要命令
    ASP.NET2.0 ObjectDataSource的使用详解(2)
    使用自定义参数
    一步一步学习ObjectDataSource--(3)
    ASP.NET2.0快速入门--绑定到对象板(后来才发现,忘了)
    关于URL路径的基本使用
    ASP.NET2.0 快速入门 使用主题对站点进行自定义
  • 原文地址:https://www.cnblogs.com/JeffKing11/p/10592998.html
Copyright © 2020-2023  润新知