• 01-简述


    1. 几个经典算法题

    • 字符串匹配 —— KMP算法(部分匹配表)
    • 汉诺塔 —— 分治算法
    • 八皇后 —— 回溯算法
    • 马踏棋盘(骑士周游) —— 图的深度优先遍历算法(DFS) + 贪心算法优化

    2. 数据结构和算法的关系

    2.1 数据结构

    • 解决存储问题
    • 把现实生活中大量而复杂的问题以特定的数据类型(事物) 和特定的存储结构(事物的关系) 保存到存储器中
    • 数据的存储 = 数据的存储 + 数据关系的存储

    2.2 算法

    • 在存储结构的基础上实现某个功能而执行的操作,这个相应的操作也叫做 [算法] // 算法就是对数据的操作
    • 广义 | 狭义 上的算法
      • 狭义的算法:与数据的存储方式密切相关
      • 广义的算法:与数据的存储方式无关

    2.3 关系

    • 程序 = 数据结构 + 算法(= 数据的存储 + 数据的操作 + 可以被计算机执行的语言)
    • 数据结构是算法的基础

    3. 看几个实际编程中遇到的问题

    • 试写出用单链表表示的字符串类及字符串结点类的定义,并依次实现它的构造函数、以及计算串长度、串赋值、判断两串相等、求子串、两串连接、求子串在串中位置等 7 个成员函数 → 数据结构:单链表
    • 五子棋程序:如何判断游戏的输赢,并可以完成 {存盘退出} 和 {继续上局} 的功能
      • 存盘退出:棋盘 → 二维数组 → 稀疏数组 → 写入文件
      • 继续上局:读取文件 → 稀疏数组 → 二维数组 → 棋盘
    • 约瑟夫问题(丢手帕问题):设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列 → 单向环形链表
    • 修路问题
      • 最小生成树
      • 普利姆算法
    • 最短路径问题
      • 弗洛伊德算法

    4. 数据结构

    4.1 线性结构

    • 有 2 种不同的存储结构
      • 顺序存储结构:逻辑关系上相邻的两个元素在物理位置上也相邻。
      • 链式存储结构:一组任意的存储单元(离散存储);数据元素之间通过指针连接(即每个数据除了存储其本身的信息外,还需要存储一个指向其直接后继的指针)。
    • 常见的线性结构
      • 数组
      • 链表
      • 队列

    4.2 非线性结构

    • 二维数组、多维数组
    • 广义表
    • 树 结构
    • 图 结构
  • 相关阅读:
    关于闹钟的题
    【历史】- UNIX发展史(BSD,GNU,linux)
    使用EF操作Mysql数据库中文变问号的解决方案
    javascript方法的方法名慎用close
    使用VS2013 + EF6 + .NET4.5 连接Mysql数据库
    ADO.NET生成的数据库连接字符串解析
    在WebBrowser控件使用js调用C#方法
    Mysql数据库之auto_increment
    Visual Studio插件Resharper 2016.1 及以上版本激活方法【亲测有效】
    Windows下Mysql5.7开启binlog步骤及注意事项
  • 原文地址:https://www.cnblogs.com/liujiaqi1101/p/12214422.html
Copyright © 2020-2023  润新知