第 2 章 数据结构和算法概述

文章目录

  • 2.1 数据结构和算法的关系
  • 2.2 看几个实际编程中遇到的问题
    • 2.2.1 问题一-字符串替换问题
    • 2.2.2 一个五子棋程序
    • 2.2.3 约瑟夫(Josephu)问题(丢手帕问题)
    • 2.2.4 其它常见算法问题:
  • 2.3 线性结构和非线性结构
    • 2.3.1 线性结构
    • 2.3.2 非线性结构

2.1 数据结构和算法的关系

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

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

  3. 程序 = 数据结构 + 算法

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

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

2.2.1 问题一-字符串替换问题

在这里插入图片描述

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

2.2.2 一个五子棋程序

在这里插入图片描述

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

  1. 棋盘 二维数组=>(稀疏数组)-> 写入文件 【存档功能】
  2. 读取文件-》稀疏数组-》二维数组 -》 棋盘 【接上局】

2.2.3 约瑟夫(Josephu)问题(丢手帕问题)

  1. Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。

  2. 提示:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表(单向环形链表),然后由 k 结点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从 1 开始计数,直到最后一个结点从链表中删除算法结束。

  3. 小结:完成约瑟夫问题,需要使用到单向环形链表 这个数据结构

2.2.4 其它常见算法问题:

在这里插入图片描述

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

2.3 线性结构和非线性结构

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

2.3.1 线性结构

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

2.3.2 非线性结构

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412188.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[足式机器人]Part2 Dr. CAN学习笔记-Ch04 Advanced控制理论

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - Ch04 Advanced控制理论 1. 绪论2. 状态空间表达State-Space Representation3. Phase Portrait相图&#xff0c;相轨迹3 1. 1-D3 2. 2-D3 3. General Form3 4. Summary3.5. 爱情中的数学-Phase …

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能&#xff0c;包括数据包的捕获和分析&#xff0c;以及抓包过滤器的使用方…

深度学习记录--正则化(regularization)

什么是正则化&#xff1f; 正则化(regularization)是一种实用的减少方差(variance)的方法&#xff0c;也即避免过度拟合 几种正则化的方法 L2正则化 又被称为权重衰减(weight dacay) 在成本函数中加上正则项&#xff1a; 其中 由于在w的更新过程中会递减&#xff0c;即权…

【数学建模美赛M奖速成系列】数据可视化方法(一)

数据可视化方法 写在前面山脊图优点缺点实现matlabpython 气泡矩阵图实现matlabpython 后续 写在前面 最近开始更新一个新的系列科研绘图&#xff0c;在同一个竞赛下&#xff0c;大家都近乎相同的解题思路下。之所以能出现一等二等三等奖的区别很大部分都在于结果的可视化&…

JVM知识总结

1.概述 JVM指的是Java虚拟机&#xff0c;本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件&#xff0c;作用是为了支持跨平台特性。 功能&#xff1a; 装载字节码&#xff0c;解释/编译为机器码 管理数据存储和垃圾回收 优化热点代码提升效率 …

C++三剑客之std::variant(二):深入剖析

目录 1.概述 2.辅助类介绍 2.1.std::negation 2.2.std::conjunction 2.3.std::is_destructible 2.4.std::is_object 2.5.is_default_constructible 2.6.std::is_trivially_destructible 2.7.std::in_place_type和std::in_place_index 3.原理分析 3.1.存储分析 3.2.…

组件v-model(.sync)记录使用(vue3)

示例&#xff08;演示地址&#xff09; 以下是Vue3中使用v-model实现组件的双向数据绑定的示例代码&#xff1a; 首先&#xff0c;让我们来了解一下Vue3中v-model的用法。在Vue3中&#xff0c;v-model 指令可以用于自定义组件上&#xff0c;用于实现组件的双向数据绑定。与Vue2…

必示科技助力中国联通智网创新中心通过智能化运维(AIOps)通用能力成熟度3级评估

2023年12月15日&#xff0c;中国信息通信研究院隆重公布了智能化运维AIOps系列标准最新批次评估结果。 必示科技与中国联通智网创新中心合作的“智能IT故障监控定位分析能力建设项目”通过了中国信息通信研究院开展的《智能化运维能力成熟度系列标准 第1部分&#xff1a;通用能…

S7-1200PLC期末复习题(大题)

一、试用经验设计法设计满足下图设计的梯形图。 二、利用一个接通延时定时器控制灯点亮10s后熄灭&#xff0c;画出梯形图 三、设计一个闪烁电路&#xff0c;要求Q0.0为ON的时间为5s&#xff0c;Q0.0为OFF的时间为3s&#xff0c;画出梯形图。 四、按下启动按钮I0.0&#xff0c;Q…

从零开始学习Zeppelin:大数据可视化分析的交互式开发系统!

介绍&#xff1a;Apache Zeppelin是一个基于Web的交互式开发系统&#xff0c;主要用于进行大数据可视化分析。其核心概念是notebook&#xff0c;所有的操作都可以在notebook中完成。Zeppelin提供了一套非常全面的数据分析解决方案&#xff0c;支持数据采集、数据发现、数据分析…

【TensorRT】c++使用面向对象来封装tensorRT推理代码的指针释放问题

使用类来封装智能指针创建的tensorRT推理engine&#xff0c;runtime&#xff0c;context 一、&#x1f34e;代码框架&#x1f34e;二、&#x1f4a1;问题以及分析&#x1f4a1; 一、&#x1f34e;代码框架&#x1f34e; 初始化模型 std::shared_ptr<nvinfer1::IExecutionC…

SD-WAN企业组网场景深度解析

在当前快速发展的企业网络环境中&#xff0c;SD-WAN技术不仅仅是实现企业站点之间网络互通的关键&#xff0c;更是满足不同站点对因特网、SaaS云应用、公有云等多种企业应用和业务访问的理想选择。从企业的WAN业务需求出发&#xff0c;我们可以对SD-WAN的组网场景进行深度解析&…