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

嵌入式学习40-数据结构

数据结构
  1.定义
     一组用来保存一种或者多种特定关系的  数据的集合(组织和存储数据
     
     程序的设计:                                                                                                                                                        将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中,
    并在此基础上实现某个特定的功能的操作;

    程序 = 数据结构 + 算法                                                                                                                       MVC:软件设计架构                                                                                                                              M:数据的管理(数据结构)                                                                                                              V:视图,数据的反映及人机交互                                                                                                          C:逻辑控制

     程序设计思想:                                                                                                                                    面向过程:                                                                                                                                           面向对象:

     
  2.数据与数据之间的关系 
  
    数据的逻辑结构:数据元素与元素之间的关系
           集合:关系平等
           线性结构:元素之间   一对一  的关系(表(数组,链表),队列。栈。。。)
           树型结构:元素之间   一对多   的关系(二叉树
           图形结构:元素之间多对多的关系(网状结构)

这里我们主要学习的是线性结构树形结构,图形结构过于复杂不做讨论


        
    数据的物理结构:数据的逻辑结构在计算机内存中的存储形式
    
          1. 顺序存储(如数组):                                                                                                                                                          采用一段  连续的内存空间  保存元素
                   优点:                                                                                                                                                          空间 连续                                                                                                                                             访问 方便
                    缺点:                                                                                                                                                        插入删除需要移动大量的元素                              int a[32] ={1,2,3,4,5,6,7,8,9}
                            需要  预分配内存空间
                            容易造成  存储空间碎片                                                                                                                                                                                                                                                         在结构体中,在内存对齐时,字节大小为16字节,而实际大小为10字节                                                                                                       此时产生内存空间碎片为6个字节                                       

            
 2.链式存储:                                                                                                                                                          采用一组 非连续的内存空间 保存元素
                    
缺点:                                                                                                                                                          访问元素 效率低
                    
优点:插入和删除数据  方便 
           不需要  预分配内存

1.创建链表                                                                                                                                                   2.插入:头插,尾插                                                                                                                    3.删除:头删,尾删                                                                                                                            4.查找                                                                                                                                                 5.修改                                                                                                                                                 6.销毁                                                                                                                                                7.遍历
            
 索引存储:                                                                                                                                                       通过  关键字  构建 索引表,通过 索引表 来来找到数据的存储位置                                                                                                                                                              (占内存,效率高)
 散列存储(哈希存储):                                                                                                                     将数据元素的存储位置关键码之间建立确定对应关系从而实现查找的存储方式     (效率低)
                          
    
   3. 储备知识
       指针
       结构体
       动态内存分配
链式:                                                                                                                                                         单向链表,双向链表,栈,队列。

二叉树:                                                                                                                                                         哈希表(算法)

链表:                                                                                                                                                         单向链表                                                                                                                                             有头链表                                                                                                                                             无头链表

知识散记:                                                                                                                                                         malloc堆的返回值是(void *)                                                                                                         指针符号 * 在32位系统中是  4个字节                                                                                                                    在64位系统中是  8个字   

                plist 操作链表的句柄                                                                                                                          声明全局变量是不能初始化的,变成局部变量            extern  int a =0 (x)                                     代码分屏推拉指令:set  mouse  = a  (代码页面)

 内库    push(推进)   pop(弹出)        

1、push是什么?(推进)

push就是推,延伸为推进。这个它是汇编的一个指令,(在其它语言中也可能会见到它)。意思都是差不多的,就是把一个元素放入栈中。你可以假想栈是一个放光盘的那种盒子,有底没盖,先push进去的光盘总是要等后push进去的出来后才能出来。

2、pop是什么?(弹出)

pop和push相反,它的意思是弹出,就是从栈里弹出一个元素,每次弹出的都是栈顶(光盘盒最上面那个,也就是最后放进去的那个)的那个元素。

3、push和pop的区别?

push是推进,pop是弹出。

push是把元素先推到最底层,由此类推,后推入的元素在最上面。  而pop是弹出,就是由高到低的一次弹出,每次弹出的就是push后推进去的元素,也就是说pop每次弹出的都是最上面的那个元素。

4、如何判断controller是被push过来的还是pop过来的?

只有push 才会执行 viewDidLoad 等等, 
pop是不会执行的。 因为viewDidLoad的意思就是在视图加载后被调用,指的是当程序一执行的时候的就开始创建。所以就好比push的推进。  而pop是弹出,所以不适合用在viewDidLoad里面。

转载于:https://www.cnblogs.com/liuzhi20101016/p/5541442.html

                                                 

相关文章:

嵌入式学习40-数据结构

数据结构 1.定义 一组用来保存一种或者多种特定关系的 数据的集合(组织和存储数据) 程序的设计: …...

k8s集群部署elk

一、前言 本次部署elk所有的服务都部署在k8s集群中,服务包含filebeat、logstash、elasticsearch、kibana,其中elasticsearch使用集群的方式部署,所有服务都是用7.17.10版本 二、部署 部署elasticsearch集群 部署elasticsearch集群需要先优化…...

【Python】清理conda缓存的常用命令

最近发现磁盘空间不足,很大一部分都被anaconda占据了,下面是一些清除conda缓存的命令 清理所有环境的Anaconda包缓存 删除所有未使用的包以及缓存的索引和临时文件 conda clean --all清理某一特定环境的Anaconda包缓存 conda clean --all -n 环境名清…...

代码随想录算法训练营第46天 | 完全背包,139.单词拆分

动态规划章节理论基础: https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 完全背包理论基础: https://programmercarl.com/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E7%90%86%E8%AE%BA%E5%9…...

rust - 将windows剪贴板的截图保存为png

本文提供了将windows系统的截图另存为png格式图片的方法。 添加依赖 cargo add clipboard-win cargo add image cargo add windows配置修改windows依赖特性 [dependencies] image "0.25.0"[target.cfg(windows).dependencies] windows "0.51.1" clipb…...

pyflink1.18.0 报错 TypeError: cannot pickle ‘_thread.lock‘ object

完整报错 Traceback (most recent call last):File "/Users//1.py", line 851, in <module>ds1 = my_datastream.key_by(lambda x: x[0]).process(MyProcessFunction()) # 返回元组即: f0 f1 f2 三列File "/Users/thomas990p/bigdataSoft/minicondaarm/…...

算法学习系列(四十一):Flood Fill算法

目录 引言一、池塘计数二、城堡问题三、山峰和山谷 引言 关于这个 F l o o d F i l l Flood\ Fill Flood Fill 算法&#xff0c;其实我觉得就是一个 B F S BFS BFS 算法&#xff0c;模板其实都是非常相似的&#xff0c;只不过有些变形而已&#xff0c;然后又叫这个名字。关于…...

Re62:读论文 GPT-2 Language Models are Unsupervised Multitask Learners

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文全名&#xff1a;Language Models are Unsupervised Multitask Learners 论文下载地址&#xff1a;https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learner…...

stm32-编码器测速

一、编码器简介 编码电机 旋转编码器 A,B相分别接通道一和二的引脚&#xff0c;VCC&#xff0c;GND接单片机VCC&#xff0c;GND 二、正交编码器工作原理 以前的代码是通过触发外部中断&#xff0c;然后在中断函数里手动进行计次。使用编码器接口的好处就是节约软件资源。对于频…...

全国各省市县统计年鉴/中国环境统计年鉴/中国工业企业数据库/中国专利数据库/污染排放数据库

统计年鉴是指以统计图表和分析说明为主&#xff0c;通过高度密集的统计数据来全面、系统、连续地记录年度经济、社会等各方面发展情况的大型工具书来获取统计数据资料。 统计年鉴是进行各项经济、社会研究的必要前提。而借助于统计年鉴&#xff0c;则是研究者常用的途径。目前国…...

【LAMMPS学习】二、LAMMPS安装(2)MacOS和Win安装

2. LAMMPS安装 您可以将LAMMPS下载为可执行文件或源代码。 在下载LAMMPS源代码时&#xff0c;还必须构建LAMMPS。但是对于在构建中包含或排除哪些特性&#xff0c;您有更大的灵活性。当您下载并安装预编译的LAMMPS可执行文件时&#xff0c;您只能安装可用的LAMMPS版本以及这些…...

如何解决网络中IP地址发生冲突故障?

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记&#xff0c;未经本人许可&#xff0c;请勿转载&#xff0c;如发现本笔记内容的错误还望各位不吝赐教&#xff08;笔记内容可能有误怕产生错误引导&#xff09;。 1、个人IP地址冲突解决方案 首先winR&#xff0c;调出…...

机器学习常用框架

机器学习是人工智能的一个重要分支&#xff0c;它通过让计算机系统利用数据自我学习来改进任务执行的能力。在机器学习领域&#xff0c;有许多成熟的框架被广泛使用&#xff0c;这些框架提供了构建和训练机器学习模型的工具。以下是一些常用的机器学习框架&#xff1a; Tensor…...

计算机网络——物理层(信道复用技术)

计算机网络——物理层&#xff08;信道复用技术&#xff09; 信道复用技术频分多址与时分多址 频分复用 FDM (Frequency Division Multiplexing)时分复用 TDM (Time Division Multiplexing)统计时分复用 STDM (Statistic TDM)波分复用码分复用 我们今天接着来看信道复用技术&am…...

【Qt问题】使用QSlider创建滑块小部件无法显示

问题描述&#xff1a; 使用QSlider创建滑块小部件用于音量按钮的时候&#xff0c;无法显示&#xff0c;很奇怪&#xff0c;怎么都不显示 一直是这个效果&#xff0c;运行都没问题&#xff0c;但是就是不出现。 一直解决不了&#xff0c;最后我在无意中&#xff0c;在主程序中…...

Linux--Shell脚本安装 httpd 和 修改IP

shell脚本 关闭防火墙、安装httpd、启动httpd [rootnode11 ~]# mkdir shell[rootnode11 ~]# vim abc.sh #!/bin/bash#安装httpd服务#1、挂载 准备yum源 mount /dev/sr0 /mnt &> /dev/nulldf$(df -h | grep /dev/sr0 | awk {print $6})if [ "$df" "/mn…...

mysql 常见问题

1、count(*) 、 count(1) 和 count&#xff08;字段&#xff09;区别 在MySQL中&#xff0c;COUNT(*)、COUNT(1) 和 COUNT(字段) 是用于统计行数的函数&#xff0c;它们的主要区别在于&#xff1a; COUNT(*)&#xff1a;会统计符合条件的所有行的数量&#xff0c;不管这些行中…...

考研机试题

目录 头文件与STL动态规划最大数组子串和最长公共子序列最长连续公共子串最长递增子序列最大上升子序列和0-1背包多重背包多重背包问题 I整数拆分最小邮票最大子矩阵 数学问题朴素法筛素数线性筛素数快速幂 石子合并锯木棍并查集Dijkstra单源最短路Python进制转换(整数无限大)全…...

Java基础知识总结(6)

String类中常用的类方法&#xff1a; 方法名称描述format(String format, Object... args)使用指定的格式字符串和参数返回一个格式化字符串。 format - 格式字符串 args - 格式字符串中由格式说明符引用的参数。如果还有格式说明符以外的参数&#xff0c;则忽略这些额外的参数…...

JAVA基础—关于Java的反射机制

1. Java的反射机制是什么&#xff1f; 反射(reflection) 当我们谈及反射&#xff0c;可以将其比作正在照镜子的行为。就像你可以在禁止中看到自己的反射一样&#xff0c;程序在运行时可以检查自身的机构和行为。这意味这程序可以动态地了解自己地组成部分&#xff0c;比如类、…...

Hive中的explode函数、posexplode函数与later view函数

1.概述 在离线数仓处理通过HQL业务数据时&#xff0c;经常会遇到行转列或者列转行之类的操作&#xff0c;就像concat_ws之类的函数被广泛使用&#xff0c;今天这个也是经常要使用的拓展方法。 2.explode函数 2.1 函数语法 -- explode(a) - separates the elements of array …...

北京市委统战部领导一行莅临百望云视察调研

“当今时代&#xff0c;数字技术、数字经济是世界科技革命和产业变革的先机&#xff0c;是新一轮国际竞争重点领域”。 为了解数字标杆企业的发展现状&#xff0c;促进新质生产力与实体产业的协同与赋能&#xff0c;近日&#xff0c;北京市委统战部非公经济处处长王雷、副处长徐…...

使用Python进行数据库连接与操作SQLite和MySQL【第144篇—SQLite和MySQL】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行数据库连接与操作&#xff1a;SQLite和MySQL 在现代应用程序开发中&#xf…...

How to manage Python environment based on virtualenv in Ubuntu 22.04

How to manage Python environment based on virtualenv in Ubuntu 安装使用创建环境激活环境安装软件包退出环境移除环境 安装 pip3 install virtualenv使用 创建环境 lwkqwfys:~$ mkdir ~/project/harbin lwkqwfys:~$ cd ~/project/harbin lwkqwfys:~/project/harbin$ vir…...

一款基于 SpringCloud 开发的AI聊天机器人系统,已对接GPT-4.0,非常强大

简介 一个基于SpringCloud的Chatgpt机器人&#xff0c;已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话&#xff0c;聊天机器人会根据用户的输入自动生成回复。同时也支持画图&#xff0c;用户输入文本…...

C语言自定义库

编写 xx.c 和xx.h文件\将源代码编译为目标文件 gcc -c add.c sub.c 执行完毕后会生产add.o和sub.o文件静态库创建使用ar命令&#xff1b; ar -r libmymath.a add.o sub.o将库和main.c文件一起编译 gcc -o main main.c -lmymath -L./ 注意 上述书写格式不要错乱 -L 是指定文件路…...

目标检测常见数据集格式(YOLO、VOC、COCO)

目录 1.YOLO格式数据 1.1数据格式 1.2YOLO格式数据示例 1.3YOLO格式可视化 2.COCO数据格式 2.1数据格式 2.2COCO格式数据示例 2.3COCO格式可视化 3.VOC数据格式 3.1数据格式 3.2VOC格式数据示例 3.3COCO格式可视化 &#x1f353;&#x1f353;1.YOLO格式数据 &…...

搭建 es 集群

一、VMware准备机器 首先准备三台机器 这里我直接使用 VMware 构建三个虚拟机 都是基于 CentOS7 然后创建新用户 部署 es 需要单独创建一个用户&#xff0c;我这里在构建虚拟机的时候直接创建好了 然后将安装包上传 可以使用 rz 命令上传&#xff0c;也可以使用工具上传 工…...

Android弹出通知

发现把Android通知渠道的重要性设置为最高时&#xff0c;当发送通知时&#xff0c;通知能直接弹出来显示&#xff0c;以前一直搞不明白为什么别的app的通知可以弹出来&#xff0c;我的不行&#xff0c;搞了半天原来是这个属性在作怪&#xff0c;示例如下&#xff1a; class Ma…...

如何用 UDP 实现可靠传输?并以LabVIEW为例进行说明

UDP&#xff08;用户数据报协议&#xff09;本身是一个无连接的、不可靠的传输协议&#xff0c;它不提供数据包的到达确认、排序保证或重传机制。因此&#xff0c;如果要在UDP上实现可靠传输&#xff0c;就需要在应用层引入额外的机制。以下是一些常见的方法&#xff1a; 确认和…...

佛山禅城网站建设/新闻发稿平台

集合 1. 如何创建集合并且取出列表重复的元素&#xff08;不可重复性&#xff0c;有序性&#xff09; 方法一&#xff1a; 直接利用花括号将数据扩起&#xff0c;无k值&#xff0c;例如&#xff0c;&#xff0c;代码如下&#xff1a; ① >>> num2 [1,1,1,2,2,3,…...

做甜品网站/百度智能小程序怎么优化排名

↓ 扫码报名时间&#xff5c;11月7日19:00-21:00地点&#xff5c;中2-1200大教室西安交通大学第一届器乐社团展示交流会西安交通大学第一届器乐社团展示交流会将于11月7日(周六)19:00-21:00在中2-1200教室举行&#xff0c;蒲公英吉他社、民乐团、交响乐团、电声乐团、尘音陶笛社…...

wordpress添加超链接/互联网营销师报名

o(∩_∩)o...哈哈&#xff0c;终于有了自己的菜园&#xff0c;希望以后多多种出好多好多的好菜。。 首先简单的做个自我介绍。 本人在北京、.net开发、主要做BS。还是刚刚入道。正在是基本功和内功修炼的阶段。希望能在这里和大家一起分享我的经验和心得。 有我们的互相鼓励&am…...

东莞网站建设提供商/友情链接网站免费

false 0&#xff0c; false ! 0,问题&#xff1a;php文档中给出 socket_create() 创建失败return false但为什么这句话是正确的if (($resource socket_create(....)) < 0 ){throw new Exception("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");}创建错误&#xff0c; $res…...

wordpress 淘客代码/上海专业排名优化公司

封装并查集类 萌新码风&#xff0c;功能有限&#xff0c;还请赐教。 成员变量 集合规模 n 父节点数组 fa 构造方法 两个构造方法 需要传入集合规模n&#xff0c;以便创建数组对象&#xff0c;默认规模为10000。 私有方法 查询根节点方法&#xff1a;int GetFather(int k…...

大学营销型网站建设实训课程/百度推广官网登录

作者&#xff1a;粘新育 任甲林 来源&#xff1a;希赛网  http://www.csai.cn 2004年06月28日 软件开发是以人为核心的过程&#xff0c;对人的依赖性远高于传统的硬件生产企业&#xff0c;为了保持开发能力的稳定性&#xff0c;一方面需要定义软件过程&#xff0c;以过程为枢…...