数据结构和算法的关系

数据 data 结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构可以编写出更加漂亮,更加有效率的代码。

学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决.

程序 =  数据结构 +  算法

         数据结构是算法的基础, 换言之,想要学好算法,需要把数据结构学到位。

实际编程中遇到的问题

问题一 字符串替换问题

小结:需要使用到单链表数据结构

问题二 一个五子棋程序

如何判断游戏的输赢,并可以完成存盘退出和继续上局的功能

  1. 棋盘  二维数组=>(稀疏数组)-> 写入文件 【存档功能】

    1. 约瑟夫(Josephu)问题(丢手帕问题)
    2. 读取文件-》稀疏数组-》二维数组 -》 棋盘 【接上局】
  2. Josephu    问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止, 由此产生一个出队编号的序列。
  3. 提示:用一个不带头结点的循环链表来处理 Josephu  问题:先构成一个有 n 个结点的单循环链表(单向环形链表),然后由 k 结点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从 1 开始计数,直到最后一个结点从链表中删除算法结束。
  4. 小结:完成约瑟夫问题,需要使用到单向环形链表 这个数据结构

其它常见算法问题:

  1. 修路问题  => 最小生成树(加权值)【数据结构】+ 普利姆算法
  2. 最短路径问题  => 图+弗洛伊德算法
  3. 汉诺塔 => 分支算法
  4. 八皇后问题 => 回溯法

线性结构和非线性结构

数据结构包括:线性结构和非线性结构。

线性结构

  1. 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系
  2. 线性结构有两种不同的存储结构,即顺序存储结构(数组)链式存储结构(链表)。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续
  3. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址信息
  4. 线性结构常见的有:数组、队列、链表和栈,后面我们会详细讲解.

非线性结构

非线性结构包括:二维数组,多维数组,广义表,树结构,图结构

2022-10-07 数据结构和算法概述 --韩顺平相关推荐

  1. 数据结构和算法概述及算法分析

    一.数据结构和算法概述 B站学习视频 1.1首先我们为什么要学习数据结构? 数据结构和算法这门课程无论在哪个学校的计算机专业,都是一门必修课,因为这门课程非常重要的,是编程必备的基础,但是这门课程是一 ...

  2. 【自学笔记】尚硅谷数据结构与算法Chapter 1 数据结构与算法概述

    Chapter 1 数据结构与算法概述 文章目录 Chapter 1 数据结构与算法概述 1.1.1 数据结构和算法的关系 1.2.1 线性结构 1.2.2 非线性结构 尚硅谷数据结构B站学习视频地址 ...

  3. 尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业01

    尚硅谷Java数据结构和java算法,韩顺平数据结构和算法课后作业第一题 要求: 1)在前面的基础上,将稀疏数组保存到磁盘上,比如map.data 2) 恢复原来的数组时,读取map.data进行恢复 ...

  4. 嵌入式团队培训_数据结构和算法概述

    嵌入式团队培训_数据结构与算法概述 要求:理解并记忆即可,会求解算法的时间复杂度 一:数据结构 1.逻辑结构: 2.物理结构 3.抽象数据类型 二:算法 1.算法的五个基本特征: 2.算法设计的要求 ...

  5. 年后跳槽BAT必看:10种数据结构、算法和编程课助你面试通关

    作者 | javinpaul 译者 | 大鱼 编辑 | 一一 出品 | AI 科技大本营 进入 BAT 这样的巨头企业工作,无疑是很多程序员的梦想.但事实上,能通过这些公司高难度编程面试的只是一小撮人 ...

  6. 数据结构与算法概述——C语言

    数据结构是什么? 数据结构,可以将之分为"数据"和"结构"两个方面去理解. 数据,很好理解.都说人离不开空气, 感觉剥夺实验 告诉我们,人也离不开信息,而 信息 ...

  7. 克鲁斯卡尔算法---(韩顺平数据结构)笔记

    克鲁斯卡尔算法 本质:从某一顶点为起点,逐步找各个顶点最小权值的边来构成最小生成树.那我们也可以直接从边出发,寻找权值最小的边来构建最小生成树.不过在构建的过程中要考虑是否会构成回环的情况 用来求加权 ...

  8. 2022/10/07

    1ritual 仪式 典礼 惯例 2.steep 陡峭 急剧升降的 浸 泡 3.feeble 虚弱 衰弱 无力的 4.analogy 类比 类推 5.lane 小路 小道 航线 车道 6.recipi ...

  9. 【数据结构与算法篇】 哈希表原理、底层实现剖析

    一个在校大二学生,在CSDN记录自我成长!!!最近在自学数据结构和算法时,学到了哈希表,有很多地方都不明白.如何使用哈希表?原理是什么?如何工作的?我们如何设计哈希表?等等,所以就在网络上查了相关博客 ...

最新文章

  1. 设计模式(2)工厂方法模式(Factory Method)
  2. TOMCAT 高并发配置
  3. 孕期出血是否先兆流产——B超看婴儿是否在子宫内+hcg值是否过低孕激素不足...
  4. caffe训练中断后如何承接上次继续训练
  5. 检查坏道右键单击盘符/属性/工具中的查错。
  6. 如何:使用Json插入数据库并从中读取
  7. 基于canvas的原生JS时钟效果
  8. 炉石整活拔线方法_酒馆战棋:整活如何简单“拔线”?瓦娘在线教学,却3本得死神?...
  9. 内核kconfig语法及原理
  10. Boost.log链接问题
  11. 微信支付商户平台登录方法详解 微信商户平台如何登录
  12. 移动光猫怎么设置虚拟服务器设置,移动光猫如何设置自带的WIFI无线功能
  13. Apache Log4j2远程代码执行漏洞复现
  14. 什么是《现代 JavaScript 教程》?
  15. 变声算法实现(基频追踪+SOLA)
  16. 让老师们哭笑不得的天才学生们
  17. 如何快速学会一项新技能?
  18. 物联网平台技术架构和应用场景
  19. 一个实施 + 一个软件负责人 = 项目经理?
  20. 川大计算机系导师,川大计算机学院硕士生导师简介

热门文章

  1. 前端Html快速入门
  2. 转换阿拉伯数字为人名币大写
  3. Linux系统的LVM与磁盘配额以及配置示例
  4. 使用xlsx.js导出有复杂表头的excel
  5. AfxMessageBox的常见应用
  6. Redis在电影票系统的设计与实现(Redis键值对设计)
  7. 【机器学习】决策树分类(简介、原理、代码)
  8. Oracle 字符串拼接函数使用方法
  9. Hexo博客yilia主题添加Gitment评论系统
  10. 使用Flutter建立一个登陆界面