• 第三章学习小结


    第3章 栈和队列

    栈和队列的本质还是线性表,是操作受限的线性表,都只能在表头或者表尾两个端点进行操作。整体上而言,栈和队列的基本操作与线性表差别不大。

    栈:后进先出(LIFO),先入栈的元素被后面的元素压在栈底,就像五指山下的孙悟空,上面的元素不走,下面的元素就无法动弹了。我感觉它有点像在做汉堡,只能从下往上一层一层地叠食材,当想移去其中的某一层时,不能从中间抽取出来,只能又由上至下逐层移出。

      有顺序栈和链栈,初始化、入栈、出栈、取栈顶元素;

      函数的调用都与栈相关,函数调用自身又可理解为递归

      经典的递归问题:汉诺塔

    void Hanoi (int n, char A, char B, char C)
    {//将塔座A上的n个圆盘按规则搬到C上,B做辅助塔
        if(n==1)    move(A,1,C);    //将编号为1的圆盘从A移到C
        else
        {
            Hanoi(n-1, A,C,B);    //将A上编号为1至n-1的圆盘移到B,C做辅助塔
            move(A,n,C);    //将编号为n的圆盘从A移到C
            Hanoi(n-1,B,A,C);    //将B上编号为1至n-1的圆盘移到C,A做辅助塔
        }
    }

    队列是先进先出的(FIFO),先进入队列的元素自然有条件先出队,与日常生活中的排队是一个道理的。编程的队列相比起日常生活的队列要死板得多,元素既不能插队,也不能从中间出队。

      解决“假溢出”问题:循环队列

        避免二义性的处理方法:①少用一个元素空间,队空[ Q.front == Q.rear ] // 队满[ (Q.rear+1)%MAXSIZE == Q.front ];②另设一个标志位以区分队列是空还是满。

    上两周的学习情况:上两周的事情有点多,花在学习上的是减少了很多,临近DDL才开始真正用功,以后坚决不能再犯了,打死都得打打代码。

    接下来还是继续学习,规定自己花在数据结构的时间每周不能少一300min。做不到就克扣一个月的奶茶。

  • 相关阅读:
    NVelocity的基本用法
    awk字符串处理
    R中去除为NA的行--转载
    从Github上轻松安装R包—githubinstall包--转载
    志诺维思(北京)基因科技有限公司
    密码子优化--转载
    reshape2 数据操作 数据融合( cast)
    rsync数据同步工具
    R语言中的字符串处理函数
    R中的sub替换函数【转】
  • 原文地址:https://www.cnblogs.com/yuanchuying/p/10632198.html
Copyright © 2020-2023  润新知