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

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

相关名词

数据是什么:

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

数据元素是什么:

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

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

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

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

数据结构框图:

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

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

逻辑结构

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

1、集合

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

示意图如下:

2、线性结构

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

示意图如下:

3、树形结构

一对多关系。

示意图如下:

4、图状结构

多对多关系。

示意图如下:

存储结构

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

1、顺序存储

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

示意图如下:

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

顺序存储的优点:

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

顺序存储的缺点:

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

适用情况:

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

2、链式存储

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

示意图如下:

适用情况:

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

3、索引存储

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

示意图如下:

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

4、散列存储

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第4章-03-用WebDriver获取页面Cookie
  • HarmonyOS开发5.0【rcp网络请求】
  • 【Android笔记】Android Studio打包 提示Invalid keystore format
  • OpenCV结构分析与形状描述符(14)拟合直线函数fitLine()的使用
  • 【白话MQ】消息队列MQ的使用和选型
  • 油耳用什么掏耳朵比较好?质量最好的可视挖耳勺推荐
  • 智慧黑板:赋能多学科教学,引领教育新风尚
  • CentOS 系统设置与维护教程
  • Apple发布会都有哪些亮点?如何在苹果手机和电脑上录制屏幕?
  • JVM面试真题总结(六)
  • 深入理解Java虚拟机:Jvm总结-垃圾收集器与内存分配策略
  • 保姆级离线+windows环境+大模型前端UI安装(二)
  • ubuntu 和windows用samba服务器实现数据传输
  • 说说深拷贝和浅拷贝?
  • 共享旅游卡,客户旅游云南,真实反馈,全程无删减!
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Android开源项目规范总结
  • django开发-定时任务的使用
  • ES学习笔记(12)--Symbol
  • Gradle 5.0 正式版发布
  • HashMap剖析之内部结构
  • idea + plantuml 画流程图
  • Java程序员幽默爆笑锦集
  • nginx 负载服务器优化
  • PHP的类修饰符与访问修饰符
  • Promise面试题2实现异步串行执行
  • React-Native - 收藏集 - 掘金
  • TCP拥塞控制
  • 翻译:Hystrix - How To Use
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 简单易用的leetcode开发测试工具(npm)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深度解析利用ES6进行Promise封装总结
  • 详解移动APP与web APP的区别
  • 主流的CSS水平和垂直居中技术大全
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ‌JavaScript 数据类型转换
  • # 计算机视觉入门
  • #include到底该写在哪
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (LeetCode C++)盛最多水的容器
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (七)glDrawArry绘制
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (正则)提取页面里的img标签
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)树状数组