数据结构(基础知识)

基础概念:

数据:数据是信息的载体,是描述客观事物属性的数,字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合

数据元素:是数据的基本单位,在程序中常作为一个整体来考虑

数据对象:是具有相同构成的数据元素的集合,是数据的一个子集。

三者之间的关系:

数据由若干数据元素构成,而数据元素可由多个数据项构成

数据项:是数据不可再分的最小标识单位

数据元素描述的是个体,数据对象描述的是一个整体

数据结构:是互相有关联的数据元素的集合,元素之间的关系称为结构

DS=(D,R);DS=(D,S);

D是数据元素的有限集,R或S是D上关系的有限集

数据结构三要素

数据结构三要素:逻辑结构,存储结构,数据的运算

1.逻辑结构(重点)

由于数据结构中的关系描述了数据元素之间逻辑上的联系,因此也称这些关系为数据的逻辑结构,它与数据的存储无关,是独立于计算机的。

数据的逻辑结构可以把数据结构分为线性结构(线性表,栈,队列,数组)和非线性结构(集合树,图)。

2.存储结构(重点)

数据结构在计算机中的表示称为数据的存储结构或物理结构,包括数据元素的表示和关系的表示

数据的存储结构主要包括:顺序存储,链式存储,索引存储和散列存储。(简答)

(1)顺序存储:

逻辑上相邻的两个元素的物理位置也相邻。

优点:能够随机存取。

缺点:插入删除需要移动大量的元素,不方便。

(2)链式存储:

逻辑上相邻的两个元素的物理位置不一定相邻,每个结点用一个指针来找到下一个结点的位置。

优点:插入和删除很方便

缺点:随机读取时不方便,需要从第一个结点开始遍历

(3)索引存储:

在存储时,还附加建立索引表,索引表中的每一项称为索引项,索引项的一般形式是(关键字,地址)

优点:检索速度快

缺点:索引表占用存储空间,并且插入和删除一个数据时,对应的索引项也要插入和删除,会耗费较多的时间

(4)哈希存储:

通过函数,根据数据的元素的关键字计算该元素的地址

优点:检索、增加和删除结点的操作比较快

缺点:可能会出现元素存储单元的冲突,解决冲突又需要增加时间和空间的开销

3.数据的运算

施加在数据上的运算包括运算的定义和实现。

数据元素四种基本类型(简答)

1.集合

数据结构中的数据元素之间除了“同属于一个集合”的关系外,无其他关系。

2.线性结构(包括线性表,栈和队列)

数据结构中的数据元素之间存在1对1的关系。

3.树型结构

数据结构中的数据元素之间存在1对多的关系。

4.网状结构

数据结构中的数据元素之间存在多对多的关系。

4.抽象数据类型

数据对象,数据对象上关系的集合和对数据对象的基本操作的集合。

ADT = 或者ADT =

这里的D为数据 R或者S是D的关系 P是对D的基本操作集

算法的特点(简答)

(1)有穷性:能在有限的步内和有限时间内执行结束

(2)确定性:对于相同的输入执行相同路径,每条指令理解起来不会产生二义性。

(3)可行性:每条指令所表示的操作可由以实现操作的有限次运算来完成

(4)有输入:有大于等于0个来自某一特定集合的输入

(5)有输出:有大于等于1个同输入有特定关系的输出

算法的评价:正确性,可读性,健壮性,效率和存储量要求

算法的效率的度量是通过时间复杂度和空间复杂度来描述的

算法的开销有两种方法:事后分析发和事前分析估算法

时间复杂度:一个语句的频度是指该语句在算法中被重复执行的次数

空间复杂度:该算法所消费的存储空间

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

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

相关文章

运营管理和服务支撑阶段

我前面的所有设备都部署好了,现在就需要运营管理和服务支撑 遇到问题了迅速解决,避免风险扩大 我们也可以给客户提供上面的服务,提高客户的预警能力,安全风险处理能力 我们不仅提供设备,还提供服务 我们公司成立了安…

高考填报志愿选专业,要善于发掘自身优势

每年的高考季,如何填报志愿又再成为困扰家长以及学生的难题,可能在面对大量的专业时,无论是考生还是家长都不知道应该如何选择,好的专业孩子不一定有优势,感兴趣的冷门专业又担心日后找工作难。 实际上,专业…

React+TS前台项目实战(十六)-- 全局常用组件Pagination封装

文章目录 前言Pagination组件1. 功能分析2. 代码详细注释3. 使用方式4. 效果展示 [PC端&手机端] 总结 前言 在上篇文章中,我们封装了表格组件Table,本文则继续封装配套使用的分页器组件。想看Table表格组件的,可自行查看全局常用组件Tab…

对数据对象的理解

一、数据对象必须是由软件理解的复合信息来表示 二、数据对象可能是外部实体、地点或结构等,例如,一个人或一部车可以被认是数据对象,在某种意义上他们可以用一组属性来定义,数据对象描述包括了数据对象及其所有属性,…

QuantML-Qlib Model | Kansformer: KAN+Transformer时序模型用于股票收益率预测

QuantML-Qlib Model | Kansformer: KANTransformer时序模型用于股票收益率预测 原创 QuantML QuantML 2024-06-18 20:57 上海 Content 之前公众号介绍了几篇KAN的文章,也做过KAN相关的模型: What KAN I say?KAN代码全解析 Qu…

CSS伪类选择器:增强内容表现力的利器

CSS伪类选择器是CSS语言中用于根据特定条件选择元素的工具。它们允许开发者对页面中元素的特定状态或部分进行样式定制,从而增强内容的表现力和交互性。本文将介绍几种常用的CSS伪类选择器,并提供样例代码,帮助开发者更好地理解和应用这些选择…

胖东来启示录:传统商超如何逆境求生?

近日,经过胖东来精心调改的永辉超市郑州信万广场店盛大开业,首日销售额高达188万元,客流量突破1.2万人,业绩飙升13.9倍,这一惊人数据无疑为当前低迷的传统商超行业带来了一线生机。胖东来,这位零售业的黑马…

java—类反射机制

简述 反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息(如成员变量,构造器,成员方法等),并能操作对象的属性及方法。反射机制在设计模式和框架底层都能用到。 类一旦加载,在堆中会产生…

Java程序之让气球上升

问题: ACM比赛时间再次举行!看到气球四处漂浮是多么的兴奋啊。但要告诉你一个秘密,评委们最喜欢的时间是猜测最流行的问题。比赛结束后,他们会数出每种颜色的气球,然后找到结果。今年,他们决定把这份可爱的…

【建设方案】基于gis地理信息的智慧巡检解决方案(源文件word)

传统的巡检采取人工记录的方式,该工作模式在生产中存在很大弊端,可能造成巡检不到位、操作失误、观察不仔细、历史问题难以追溯等现象,使得巡检数据不准确,设备故障隐患得不到及时发现和处理。因此建立一套完善的巡检管理系统是企…

Java面试题:描述线程池的工作原理,并讨论如何在Java中合理配置线程池参数

线程池是一种管理线程的工具,它能够减少因频繁创建和销毁线程而带来的开销,提高资源利用率和系统性能。下面是线程池的工作原理和如何在 Java 中合理配置线程池参数的讨论。 线程池工作原理 初始化:在线程池创建时,会初始化一定…

Java程序之寻找自幂数

题目: 自幂数是指一个 n 位数(3≤n≤7 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 5^3 3^3 153;1^46^43^44^41634)。三位自幂数:水仙花数;四位…

HeidiSQL导入与导出数据

HeidiSQL两种导入与导出数据的方法:整个库复制,和仅复制数据 一 整个库复制 1 选中需要导出的数据库(这里是MyDBdata),点击导出为SQL脚本。 2 按照如图进行选择 3 选做:删除当前数据库【如果有】 -- 删除数据库 USE mysql; D…

python-题库篇-Python语言特性

文章目录 Python语言特性1 Python的函数参数传递2 Python中的元类(metaclass)3 staticmethod和classmethod4 类变量和实例变量5 Python自省6 字典推导式7 Python中单下划线和双下划线8 字符串格式化:%和.format9 迭代器和生成器10 *args and **kwargs11 面向切面编程AOP和装饰器…

[16] 使用Opencv_CUDA 实现访问图像像素、直方图均衡化、几何变换

使用Opencv_CUDA 实现访问图像像素、直方图均衡化、几何变换 访问图像的各个像素强度直方图的计算与均衡几何变换:缩放、平移与旋转1. 访问图像的各个像素强度 #include <iostream> #include "opencv2/opencv.hpp"int main() {cv::Mat h_img1 = cv::

基于SpringBoot+大数据城市景观画像可视化设计和实现

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

C语言入门系列:初识函数

文章目录 一&#xff0c;C语言函数与数学函数的区别1&#xff0c;回忆杀-初中数学2&#xff0c;C语言中的函数 二&#xff0c; 函数的声明1&#xff0c;函数头1.1&#xff0c;函数名称1.2&#xff0c;返回值类型1.3&#xff0c;参数列表 2&#xff0c;函数体2.1&#xff0c;函数…

Android使用zxing生成二维码

效果图如下&#xff1a; **前提&#xff1a;导入zxing的jar后开始操作&#xff0c;老规矩最后有源码&#xff0c;作者布局默认相对布局。 第一步&#xff1a;定义二维码的长宽高及图片控件** 第二步&#xff1a;实例化QRCodeWriter后利用for循环将二维码画出来&#xff0c;然后…

用Visual Studio调试CMake项目并生成Visual Studio工程

一. 在Windows系统上安装CMake 访问CMake官方网站https://cmake.org/download&#xff0c;或通过文末链接下载&#xff1a;在下载页面上&#xff0c;找到并点击“Download”链接以获取最新的稳定版本的CMake。请注意&#xff0c;虽然新版本可能包含更多功能和改进&#xff0c;…

关于DrawTools的分析- 一个优秀的C#开源绘图软件

国外大佬&#xff0c;曾经写过两个关于DrawTools相关的开源绘图软件。 我更新了一个优化的版本如下图&#xff0c;稍后会发布更新给大家。 需要的用户可发邮件给我 448283544qq.com 应用于AGV地图编辑器如下&#xff1a; 那么这个优于很多普通的画布软件&#xff0c;包含点、…