当前位置: 首页 > news >正文

嵌入式学习day17(数据结构)

大纲

数据结构、算法
数据结构:
           1.  线性表:顺序表、链表(单向链表,单向循环链表,双向链表,双向循环链表)、栈(顺序栈,链式栈)、队列(循环队列,链式队列)
           2.  树:二叉树、遍历、创建
算法:
           查询方法、排序方式

为什么要学数据结构?

     1.C语言是学习如何写程序,数据结构是学习如何简洁高效的写程序
      2.如果遇到一个实际问题,需要写代码实现相应功能,需要解决两个问题:
          (1).如何表达数据间的逻辑关系以及怎么存储到计算机当中?
                         数据结构:数据的逻辑结构以及存储操作
                         数据:不再是单纯的数字,而是类似于一个集合的概念
                         结构:数据之间的关系
         (2).采用什么方法去解决?
                               采用算法去解决

数据结构+算法=程序

一丶数据结构

1.概念

          数据的逻辑结构,存储结构及操作(数据的运算)

2.数据

         数据:不再是单一的数值,而是类似于集合的概念

         数据元素:是数据的基本单位,由若干个数据项组成
         数据项:是数据的最小单位,描述数据元素信息
         数据元素又叫节点

3.结构

3.1逻辑结构

数据元素并不是独立存在的,他们之间存在着某种关系(联系或结构)。

元素和元素之间的关系:
线性关系:
     线性关系 ---》 线性结构 ---》一对一 ----》线性表:顺序表、链表、栈、队列
层次关系:

     层次关系 ---》 树形结构 ---》一对多 --- 》 树:二叉树
网状结构:
     
网状关系 ---》 图状结构 ---》 多对多 ---》图

3.2存储结构

数据的逻辑结构在计算机中的具体体现(数据的运算)

顺序存储:
特点:内尺连续,随机存取,每个元素占用较少
实现:数组

链式存储:
特点:内存不连续,通过指针实现
链表实现:通过定义结构体,里面是数据域和指针域

#include<stdio.h>
struct node
{int data;//数据域,存放节点要保存的地址struct node *next;//指针域,指向下一个节点的地址(类型为结构体指针)
};
int main(int argc, char const *argv[])
{   //定义三个节点struct node A={1,NULL};struct node B={2,NULL};struct node C={3,NULL};//连接三个节点A.next=&B;//连接A和B节点,让A中的指针域保存B的地址B.next=&C;//连接B和C节点,让B中的指针域保存C的地址printf("%d\n",A.data);//打印A中的数据域printf("%d\n",(A.next)->data);//打印B中的数据域printf("%d\n",(A.next)->next->data);//打印C中的数据域return 0;
}

索引存储:

在存储数据同时建立一个附加索引表

也就是索引存储结构 = 索引表 + 存数据文件
可以提高查找速度,特点检索速度快,但是占用内存多,删除数据文件要及时更改索引表。

散列存储: 

          数据在存储的时候与关键码之间存在某种对应关系
          存的时候按照对应关系存
          取的时候按照对应关系取

4.操作

          增、删、改、查

二丶算法

1.概念

  算法就是解决问题的思想方法,数据结构就是算法的基础

2.算法的设计

算法的设计:取决于数据的逻辑结构
算法的实现:依赖于数据的存储结构

3.算法的特点

有穷性:步骤是有限的
确定性:每一个步骤都有明确的含义,无二义性
可行性:在规定时间内可以完成
输入
输出

4.评价算法的好坏

        正确性 :保证算法可以正确实现功能

        易读性 :容易被解读
        健壮性 : 容错处理
        高效性 :执行效率,算法执行快慢容易受到计算机性能的影响,不可以作为评判算法高效性的标准,这通过可执行语句重复执行次数来衡量算法是否高效 。(时间复杂度)
        低存储性 : 占用空间少

5.时间复杂度

            算法的可重复执行语句执行的次数, 通常时间复杂度用一个问题规模函数来表达

            T(n) = O(f(n))
            T(n) //问题规模的时间函数
            n //问题规模,输入量的大小
            O //时间数量级
            f(n) //算法的可执行语句重复执行的次数 用问题规模n的某个函数f(n)来表达

计算大O的方法

            (1)根据问题规模n写出表达式 f(n)
            (2)  只保留最高项,其它项舍去
            (3)  如果最高项系数不为1,除以最高项系数
            (4)  如果有常数项,将其置为1 //当f(n)的表达式中只有常数项的时候,有意义 f(n) = 8

如:f(n)=8 ->O(1)
       f(n) = 3n^5 + 2n^3 + 6*n^6 + 10->O(n^6)

6.空间复杂度

算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。

算法占用的存储空间包括:
   1.输入输出数据所占空间
   2.算法本身所占空间
   3.额外需要的辅助空间

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【C++】深度解析:用 C++ 模拟实现 priority_queue类,探索其底层实现细节(仿函数、容器适配器)
  • WARNING XXX is not overriding the create method in batch
  • IDEA XML文件去掉黄色和绿色底色
  • Qt第十六章 多媒体Multimedia
  • fscan下载和使用
  • 预训练语言模型PLM(课程笔记)
  • 数据结构:栈、队列详解篇
  • 找到sql里面参数字段占位符的位置,方便对字段进行加密存储
  • “软件定义汽车”下的软件虚拟化技术
  • Unity常用插件记录
  • MATLAB算法实战应用案例精讲-【人工智能】暗数据(概念篇)
  • 添加数据判断是否存在存在不添加,或存在更新
  • 【网络编程】第十章 网络层-IP(分片组装+网段+路由+NAT)
  • Linux rocky 9.2 安装mysql-8.0.39-linux-glibc2.28-x86_64.tar.xz
  • 引领未来的NVR方案:海思3520D芯片与全套NVR模组源代码解析
  • 【mysql】环境安装、服务启动、密码设置
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 30秒的PHP代码片段(1)数组 - Array
  • Android Volley源码解析
  • Angular Elements 及其运作原理
  • CentOS 7 防火墙操作
  • classpath对获取配置文件的影响
  • Date型的使用
  • in typeof instanceof ===这些运算符有什么作用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java面向对象及其三大特征
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • react-native 安卓真机环境搭建
  • Vue.js 移动端适配之 vw 解决方案
  • ------- 计算机网络基础
  • 近期前端发展计划
  • 京东美团研发面经
  • 前端攻城师
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何使用 JavaScript 解析 URL
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 赢得Docker挑战最佳实践
  • 最简单的无缝轮播
  • 阿里云服务器如何修改远程端口?
  • # Redis 入门到精通(七)-- redis 删除策略
  • ( 10 )MySQL中的外键
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (SERIES12)DM性能优化
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)ssm码农论坛 毕业设计 231126
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (三)c52学习之旅-点亮LED灯
  • (一) 初入MySQL 【认识和部署】
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (自适应手机端)行业协会机构网站模板
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 简单实现MD5