当前位置: 首页 > 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.额外需要的辅助空间

相关文章:

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

大纲 数据结构、算法数据结构&#xff1a; 1. 线性表&#xff1a;顺序表、链表&#xff08;单向链表&#xff0c;单向循环链表&#xff0c;双向链表&#xff0c;双向循环链表&#xff09;、栈&#xff08;顺序栈&#xff0c;链式栈&#xff09;、队列&#xff08;循…...

网站怎么做敏感词过滤,敏感词过滤的思路和实践

敏感词过滤是一种在网站、应用程序或平台中实现内容审查的技术&#xff0c;用于阻止用户发布包含不适当、非法或不符合政策的内容。我们在实际的网站运营过程中&#xff0c;往往需要担心某些用户发布的内容中包含敏感词汇&#xff0c;这些词汇往往会导致我们的网站被用户举报&a…...

【峟思】如何使用投入式水位计才能确保测量准确性

在水利、环保、工业监测等众多领域&#xff0c;水位测量是一项至关重要的任务&#xff0c;它不仅直接关系到水资源的合理利用与保护&#xff0c;还影响到防洪、供水、排水等多个方面的安全与效率。投入式水位计作为一种常见的水位测量工具&#xff0c;以其结构简单、测量准确、…...

供应链管理系统(SCM) —— 企业物流的智能枢纽

SAP 供应链管理系统以打造数字化和集成化的供应链管理平台为使命&#xff0c;将传统的仓储管理系统、制造执行系统、产品管理系统等软件进行升级和上云管理&#xff0c;为企业提供面向客户、合作伙伴及员工的数字化SCM系统平台。 SAP SCM系统从设计到运维&#xff0c;全面优化供…...

计算机视觉(CV)技术的优势和挑战。

计算机视觉&#xff08;CV&#xff09;技术在许多领域中具有广泛的应用&#xff0c;并且具有一些优势和挑战。 优势&#xff1a; 1. 高效性&#xff1a;CV技术能够快速处理大量的图像和视频数据&#xff0c;以实现实时的分析和决策。 2. 自动化&#xff1a;CV技术可以自动化地…...

数据库MySQL多表设计、查询

目录 1.概述 2.一对多 3.一对一 4.多对多 5.多表查询 5.1内连接 5.2外连接 5.3子查询 1.概述 项目开发中,在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个…...

基于vue框架的北城招聘管理平台题目7lly3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,企业,企业信息,职位类型,职位信息,简历信息,职位应聘,求职意愿,面试信息,录取信息,实习信息,冻结信息,解冻信息 开题报告内容 基于Vue框架的北城招聘管理平台 开题报告 一、引言 随着互联网的飞速发展和企业对人才需求的不断增…...

详讲C#中如何存储当前项目的设置-超级简单省事

我们在编写软件的时候总有一些配置数据需要保存&#xff0c;比如用户选择的偏好设置&#xff0c;又如软件所用到的数据库文件等。我们有很多中方式都可以保存&#xff0c;比如直接保存在某个文本文件&#xff0c;或者ini文件中&#xff0c;其实最简单的办法是保存在项目的资源文…...

【QT文件操作】---xml文件读取

XML&#xff08;可扩展标记语言&#xff0c;eXtensible Markup Language&#xff09;是一种用于存储和传输数据的文本格式&#xff0c;广泛用于配置文件、数据交换和文档表示。XML 文件具有明确的结构和标记&#xff0c;这使得它能够描述复杂的层次结构和数据关系。 xml和html…...

科研软件 | Diamond 4.6 安装教程

软件介绍 Diamond一个化学专业软件。它是一款在原子水平实现晶体结构可视化的软件&#xff0c;包括分子和聚合物扩展、多面体、搜索结构数据、自动和批量创建结构图片等功能&#xff0c;支持晶体结构着色和渲染以及批注。 软件下载 https://pan.quark.cn/s/37214b5bec7c 软…...

利用keepalived达成服务高可用

官方网站Keepalived for Linux 1.keepalived简介 vrrp 协议的软件实现&#xff0c;原生设计目的为了 高可用 ipvs 服务 功能&#xff1a; 基于 vrrp 协议完成地址流动 为 vip 地址所在的节点生成 ipvs 规则 ( 在配置文件中预先定义 ) 为 ipvs 集群的各 RS 做健康状态检测 …...

Dumpy:一款针对LSASS数据的动态内存取证工具

关于Dumpy Dumpy是一款针对LSASS数据的动态内存取证工具&#xff0c;该工具专为红队和蓝队研究人员设计&#xff0c;支持重新使用打开的句柄来动态转储 LSASS。 运行机制 Dumpy可以动态调用 MiniDumpWriteDump 来转储 lsass 内存内容。此过程无需打开 lsass 的新进程句柄&…...

TinyEngine是什么?

TinyEngine 是 OpenTiny 项目下的一个开源低代码引擎&#xff0c;旨在帮助开发者快速构建应用程序。它提供了可视化搭建页面的能力&#xff0c;支持在线实时构建和二次开发或集成&#xff0c;适用于多种场景的低代码平台开发&#xff0c;例如资源编排、服务端渲染、模型驱动、移…...

FPGA跨时钟域处理

文章目录 一、为什么要做跨时钟域处理二、单bit信号从慢时钟到快时钟处理2.1 使用同步寄存器链(打两拍)2.2 仿真代码编写2.3 仿真结果观察 三、单bit信号从快时钟域到慢时钟域处理3.1 使用脉冲展宽3.2 仿真代码编写3.3 仿真结果观察 四、在任意时钟域跨单bit信号4.1 使用握手协…...

【Docker深入浅出】Docker镜像

文章目录 一. Docker镜像简介二. Docker镜像详解1. 镜像和容器的关系2. 镜像通常比较小3. 拉取镜像4. 镜像命名4.1. 镜像仓库服务4.2. 官方和非官方镜像仓库4.3. 镜像的命名和标签 5. 为镜像打多个标签6. 过滤镜像内容6.1. 虚空镜像6.2. 删除虚空镜像6.3. 过滤器与格式化输出 7…...

“LOCAL_LISTENER”参数导致业务无法连接数据库,文末附Oracle连接故障检查监听的排查流程

1. 背景及问题 今天在Oracle BCV技术[1]做数据同步&#xff0c;建立生产库的测试库&#xff0c;需要DBA配合同步前后的停库和起库。在同步完起库后&#xff0c;有部门反应同步好的测试库连接不上去。 2. 问题排查 以我当前的知识储备&#xff0c;能想到的可能就是以下几点进…...

Vmware虚拟机接入物理机路由器网络

网络适配器增加至两个&#xff0c;一个选NAT, 另一个选host-only,再加一个桥接&#xff0c;不勾选使用物理网卡&#xff0c;然后重启即可&#xff01;...

yolov8旋转框+关键点检测

一、Yolov8obb_kpt -----------------------------------现已在v8官方库上更新旋转框分割算法和旋转框关键点检测算法-------------------------- ------------------------------------------- https://github.com/yzqxy/ultralytics-obb_segment---------------------------…...

Qt-QWidget的windowTitle属性(13)

目录 描述 相关API 使用观察 描述 这个我们之前用过很多次了&#xff0c;就不再赘述了&#xff0c;简单说就是可以给那个边框设置标题&#xff0c;但是这里有一个小细节需要我们注意&#xff0c;就是谁的窗口谁设置 相关API 使用观察 我们这样写的话会发现一个问题&#x…...

RCE编码绕过--php://filter妙用

目录 代码 如何绕过 payload构造 代码 <?php $content <?php exit; ?>; $content . $_POST[txt]; file_put_contents($_POST[filename],$content); 当你想要输入代码的时候前面会有<?php exit;?>;&#xff0c;代码没有办法执行下去&#xff0c;所以…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...