• [原创] 程序员面试宝典:第十三章 数据结构基础


    1. 单链表逆置:头插法,三个指针控制下,一个一个地指向前边元素

     
    2. 二叉查找树:左孩子小,右孩子大的二叉树
    • 建树:按大小关系放置
    • 查询:按大小关系走
    • 排序:先左后右,中序输出
    • 找最大最小:左到底或者右到底
    • 找直接后继:
      • 有右子树:右子树中最小元素
      • 无右子树:向上找到第一个是左孩子的节点,其父节点即是后继。(比当前节点大一点点的)
    • 插入:按大小关系放置
    • 删除:
      • 无孩子节点,直接删
      • 1个孩子节点,删除之后把孩子连接到父节点
      • 2个孩子节点,将其直接后继移动到这个位置(将只比被删除节点大一点儿的节点放在删除位置)
    3. 约瑟夫环:n个人,从k开始报数,数到m的出列,求出列序列。
     
    4. 栈:
    • 函数压参:从右向左
    • 生长方向:windows,从上向下
    5. 栈和队列:
    • 用两个栈实现队列:A入,B出,当B空时,一次性将A弹空,压入B
    • 用两个队列实现栈:入到空的队列里边,出时,将n-1个元素装入另一个空的里边,将最后一个弹出
     
    6. 堆的分配:
    • 堆表中记录空闲内存地址
    • 寻找第一个大于申请空间的堆节点
    • 空间的首地址记录大小,方便delete
    • 将剩余部分放回堆表
    • 对于内建类型,new时不必保存分配长度,操作系统记录了对于带有析构函数的类型,new时自动保存长度,用来指示调用析构函数的次数。
    7. 堆栈的生长方向:
    • 由上向下生长,连续;
    • 由下向上生长,不连续;
    8. 函数的调用过程:
    • 参数自右向左入栈;
    • 函数返回地址入栈;
    • 跳转;
    • 栈底EBP(栈底指针,地址最高)入栈,调整栈底为 EBP = ESP(栈顶指针,地址最低)
    • 函数使用新的栈保存临时变量等。
    9. 函数返回过程:
    • 被调方将返回值放入EAX寄存器
    • 清理堆栈(由调用方式决定由谁做这件事情)
    • 调用方从EAX寄存器中获取返回值
     
    10. 函数调用方式(调用者和被调用函数间传递参数及返回参数
    • __stdcall:windows API,由被调函数调整堆栈(调用方压参数,返回后,由被调用者清理堆栈,代码较小)
    • __cdecl:ANSI C,由调用者调整堆栈(调用方压参数,返回后,调用者复原堆栈,代码较大,默认)
    11. 二叉树遍历:
    • 先序遍历:第一个为根节点
    • 中序遍历:
    • 后序遍历:最后一个为根节点,左右子树能够分开
    • 先序和中序遍历,可以确定恢复一棵二叉树(?)
    12. 二叉树比较相等,递归比较左右子树
     
    13. 图的表示方法:邻接矩阵表示法,邻接表法
     
    14. 死代码检测:用图表示语句,从return中的变量开始遍历,没有遍历到的即为死代码。
     
    15. 如果排序时,所有参与排序的元素都在内存中,则称为内排序
     
    16. 时间复杂度:不带常数项和常数系数
    • O(1) < O(log2n) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n)
    17. Hash表:直接定址法,数字分析法,平方取中法,折叠法,取余法,随机数发
  • 相关阅读:
    IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题
    ORACLE中的字符串替换 replce、regexp_replace 和 translate
    ORA-01654 索引 无法通过 表空间扩展
    HTML篇之CSS样式:<button></button>按钮变成超链接<a></a>的样式
    HTML里用如何包含引用另一个html文件 .
    java程序中实现打开 某个指定浏览器
    Oracle查询数据库中所有表的记录数
    getOutputStream() has already been called for this response解释以及解决方法
    oracle索引,索引的建立、修改、删除
    各种组件的js 获取值 / js动态赋值
  • 原文地址:https://www.cnblogs.com/icemoon1987/p/2709573.html
Copyright © 2020-2023  润新知