1.C_数据结构_基本知识

相关名词

数据是什么:

数据即信息的载体,是能够输入到计算机中并且能够计算机识别、存储、处理的符号总称。这里的数据不一定是一个int型,也可能是一个语音、一个字符串或者其他的一些打包的内容。

数据元素是什么:

  • 数据元素(记录)是数据的基本单位。
  • 数据元素由若干个基本项组成,这个基本项被称为字段、域、属性。
  • 数据结构是研究数据元素之间的关系,

例如在数据库中有如下一条数据。

对于整个一行的数据,我们称为这是一个数据元素。在代码中,数据元素以结构体形式存在。

产品编号、名称、规格、出厂日期是字段。在代码中,这是结构体中的成员。

数据结构框图:

什么是随机存取和按地址存取:

  • 随机存取:允许通过索引来访问元素(如:a[i]),而不需要顺序地遍历数据结构。 
  • 按地址存取:直接通过内存地址来访问数据元素的方式

逻辑结构

研究逻辑结构,就是研究数据元素的前驱和后继。前驱就是前面是谁,后继就是后面是谁。

1、集合

数据元素间除了同属于一个集合外,没有其他关系。编程中不考虑这种逻辑。

示意图如下:

2、线性结构

一对一关系。编程中有线性表、栈、队列。

示意图如下:

3、树形结构

一对多关系。

示意图如下:

4、图状结构

多对多关系。

示意图如下:

存储结构

存储结构研究的是如何把逻辑结构在计算机中进行存储。

1、顺序存储

将数据结构中的各元素按照其逻辑顺序存放于存储器一片连续的存储空间中。一般用数组表示。

示意图如下:

顺序存储时,得知了任意一个数据元素的地址,就可以直接计算出其他元素的地址。

顺序存储的优点:

  • 逻辑上相邻的元素ai、ai+1,其存储位置也相邻
  • 对数据元素ai的存取为随机存取或按地址存取
  • 存储密度高,即:空间利用率高。存储密度D = 数据元素所占总空间 / 数据结构所占总空间

顺序存储的缺点:

  • 插入、删除的运算实现复杂。因为删除一个数据元素,之后的数据元素都需要移动位置。

适用情况:

  • 查找的情况比较多,插入、删除的情况比较少

2、链式存储

将数据结构中的各元素存放在存储器的不同地方,每一个存储块称为一个结点,用指针方式建立它们的链接。

示意图如下:

适用情况:

  • 查找的情况比较少,插入、删除的情况比较多

3、索引存储

在存储数据的同时、建立一个附加的索引表,即:索引存储结构 = 数据文件 + 索引表

示意图如下:

在上图中,通过索引表快速找到丁的起始位置,之后从起始位置开始,在数据文件中找到所需丁xx的地址,这样就提高了索引效率。

4、散列存储

根据数据元素中的特殊字段(key),计算出数据元素的存放地址。

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

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

相关文章

Unity Hub自动安装指定版本Unity的Android开发环境

Unity开发Android环境要求SDK、DNK、JDK、Gradle版本都要对才能发布APK,自己去配置很容易出错。Unity Hub可以自动安装指定版本Unity的Android开发环境。 1.安装国内用的UnityHub(我这里用的3.3.2-c6) 2.找到对应的Unity版本 3.点击【从Unit…

基于EPS32C3电脑远程开机模块设计

基于EPS32C3电脑远程开机模块设计 前言 缘起,手头资料太多了,所以想组一台NAS放在家里存储数据。在咸鱼淘了一套J3160主板加机箱,加上几块硬盘组建NAS。 对于NAS,我的需求是不用的时候关机(节省功耗),要用的时候开机…

”CSS 网格“二维布局系统(补充)——WEB开发系列32

CSS 网格布局是一种二维布局系统,用于网页设计。通过使用网格,你可以将内容以行和列的形式进行排列。此外,网格布局还能够简便地实现一些复杂的布局结构。 一、什么是网格布局? CSS网格布局是一种二维布局系统,它允许…

降维打击 华为赢麻了

文|琥珀食酒社 作者 | 积溪 真是赢麻了 华为估计都懵了 这辈子还能打这么富裕的仗? 其实在苹果和华为的发布会召开之前 我就知道华为肯定会赢 但我没想到 苹果会这么拉胯 华为这是妥妥的降维打击啊 就说这苹果iPhone 16吧 屏幕是变大了、颜色…

动手学深度学习(pytorch土堆)-03常见的Transforms

Compose transforms.Compose 是 PyTorch 中的一个函数,用于将多个图像变换操作组合在一起,形成一个变换流水线。这样可以将一系列的图像处理操作整合为一个步骤,便于对图像进行批量预处理或增强。 基本用法 transforms.Compose 接受一个列表…

TCP通信实现

目录 前言 一、实现TCP通信 二、通信原理 (网路传输的封包与拆包) 三、通信过程中的头 1.MAC帧 2. IP头 3.TCP头 4.UDP头 总结 前言 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接…

鸿蒙轻内核A核源码分析系列六 MMU协处理器(2)

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 轻内核A核源码分析系列一 数据结构-双向循环链表 轻内核A核源码分析系列二 数据结构-位图操作 轻内核A核源码分析系列三 物理内存(1&#xff0…

使用QT界面运行roslaunch,roslaunch,roscore等

QT通过界面运行rosrun,roslaunch,roscore等 QT 运行roslaunch加入ui界面修改cmakelist运行 使用qt界面运行rosrun,roscore,roslaunch等方法一方法二方法三 QT 运行roslaunch 首先需要使用QT安装好ROS插件,并且配置好环境,这个在之前的文章已…

Java架构师实战篇Redis亿级数据统计方案

目录 1 Redis亿个keys数据统计方案2 Redis聚合统计(SUNIONSTORE)3 Redis排序统计(LRANGE)4 值状态统计(bitmap)4.1 位图简介4.2 应用场景4.3 常用的命令4 基数统计(SADD)5 总结想学习架构师构建流程请跳转:Java架构师系统架构设计 1 Redis亿个keys数据统计方案 在 Web 和移动…

CTFHub技能树-信息泄露-HG泄漏

目录 漏洞产生原因 解题过程 当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。 漏洞产生原因 Mercurial(hg)是一种分布式版本控制系统,它与Git类似也可以用于管…

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq) 3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构&…

VLAN原理与配置

一、基本原理 1、VLAN数据帧格式 IEEE 802.1Q标准对Ethernet帧格式进行了修改,在源MAC地址字段和协议类型字段之间加入4字节的802.1Q Tag。VLAN帧最小帧长为64字节。 Type字段含义:长度为2字节,表示帧类型。取值为0x8100时表示802.1Q Tag帧…

Python 调用手机摄像头

Python 调用手机摄像头 在手机上安装软件 这里以安卓手机作为演示,ISO也是差不多的 软件下载地址 注意:要想在电脑上查看手机摄像头拍摄的内容的在一个局域网里面(没有 WIFI 可以使用 热点 ) 安装完打开IP摄像头服务器 点击分享查看IP 查看局域网的I…

日志相关知识

1.作用 a.为了代替System.out.println(),可以定义格式,重定向文件等。 b.可以存档,便于追踪问题。 c.可以按级别分类,便于打开或关闭某些级别。 d.可以根据配置文件调整日志,无需修改代码。 …

【CanMV K230 AI视觉】 人体检测

【CanMV K230 AI视觉】 人体检测 人体检测 动态测试效果可以去下面网站自己看。 B站视频链接:已做成合集 抖音链接:已做成合集 人体检测 人体检测是判断摄像头画面中有无出现人体,常用于人体数量检测,人流量监控以及安防监控等。…

# CentOS7 设置mysql的 root 用户密码时,报错 ERROR 1819(HY000)...ERROR1193... 解决方法。

CentOS7 设置mysql的 root 用户密码时,报错 ERROR 1819(HY000)…ERROR1193… 解决方法。 一、错误描述: mysql ALTER USER rootlocalhost IDENTIFIED BY 123; ERROR 1819 (HY000) Your password does not satisfy the current policy requirementsERRO…

NGINX开启HTTP3,给web应用提个速

环境说明 linuxdockernginx版本:1.27 HTTP3/QUIC介绍 HTTP3是由IETF于2022年发布的一个标准,文档地址为:https://datatracker.ietf.org/doc/html/rfc9114 如rfc9114所述,http3主要基于QUIC协议实现,在具备高性能的同时又兼备了…

最全面的递归算法详解,一篇足矣(高手必备)

在编程中,递归和循环是两种常用的控制结构,各有其独特的优缺点。理解这两者的特点和应用场景,对于编写高效、可读的代码至关重要。 什么是递归? 递归是一种强大的编程技术,允许函数在其定义中调用自身。递归通常涉及…

nvm ls-remote: N/A

背景: 项目因为node版本问题运行失败,在彻底删除node后再重新安装 问题描述: 原因分析: 可能是因为终端不能获取镜像包 解决办法: 【方法一】 输入: step1. export NVM_NODEJS_ORG_MIRRORIndex of …

常用电路及分析

前言 最近在研究一些简单的硬件知识,把在网上看到的一些常见电路分析总结了一下。 有纰漏请指出,转载请说明。 学习交流请发邮件 1280253714qq.com 串联稳压电路 三极管串联线性稳压电路原理详解及Multisim仿真_三极管稳压电路-CSDN博客 线性稳压电…