数据结构:基本概念【详解】

【大话数据结构】——-数据结构 数据结构,顾名思义:就是计算机存储、组织数据的方式。 定义: 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 使用数据结构的好处: 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Structure=( 阅读详情
AI摘要

本文详细介绍了数据结构的基本概念,包括数据、数据元素、数据项、数据对象和数据结构,以及逻辑结构(集合、线性、树形、图形)和物理结构(顺序、链式)。同时阐述了算法的定义、特性、渐进增长分析以及时间复杂度和空间复杂度的概念。通过对数据结构和算法的理解,有助于提升程序设计能力。

友情链接:数据结构专栏

知识框架

在这里插入图片描述

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系的操作等相关问题的学科

程序设计=数据结构+算法


No.1 什么是数据结构?

一、基本概念和术语

1.数据

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。(数据不仅包含整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。)

2.数据元素

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被成为记录。(比如:鸡鸭牛羊猪狗等动物就是禽类的数据元素)

3.数据项

数据项:一个数据元素可以由若干个数据项组成。(比如:人可以有眼耳口鼻这些数据项)。
数据项是数据不可分割的最小单位。

在这里插入图片描述

4.数据对象

数据对象:是性质相同的数据元素的集合,是数据的子集。(什么是性质相同呢,是指数据元素具有相同数量和类型的数据项,比如:人都有姓名、生日、性别等相同的数据项)
既然数据对象是数据的子集,在实际应用中,处理的数据元素通常具有相同性质,在不产生混淆的情况下,我们都将数据对象简称为数据。

5.数据结构

不同的数据元素之间不是独立的,而是存在特定的关系,我们将这些关系成为结构。
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

二、逻辑结构和物理结构

1.逻辑结构

逻辑结构:是指数据对象中数据元素之间的相互关系。

集合结构
集合结构:集合结构中的数据元素除了同属于一个集合外,他们之间没有其他关系。
集合结构
线性结构
线性结构:线性结构中的数据元素之间是一对一的关系
线性结构
树形结构
树形结构:树形结构中的数据元素之间存在一种一对多的层次关系。
树形结构
图形结构
图形结构:图形结构的数据元素是多对多的关系
图形结构

2.物理结构(存储结构)

物理结构:是指数据的逻辑结构在计算机中的存储形式。
数据元素的存储结构形式有两种:顺序存储和链式存储。
顺序存储结构
顺序存储结构:是把数据存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。
顺序存储结构
链式存储结构
链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联数据元素的位置。
链式存储结构

三、抽象数据类型

1.数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
不同的数据类型,开辟出的内存空间也不一样。
在C语言中,按照取值的不同,数据类型可以分为两类:

  • 原子类型:是不可再分解的基本类型,包括整型、实型、字符型。
  • 结构类型:由若干个类型组合而成,是可以再分解的。例如,整型数组是由若干个整型数据组成的。

比如,在C语言中变量生命int a,b,这就意味着,在给变量a和b赋值时不能超出int的取值范围,变量a和b之间的运算只能是int类型所允许的运算。

2.抽象数据类型

抽象是指抽取事物具有的普遍性的本质。
**抽象数据类型(Abstract Data Type, ADT):是指一个数学模型及定义在改模型上的一组操作。**抽象数据类型的定义仅取决于它的一组逻辑特性,而与其他计算机内部如何表示和实现无关。抽象数据类型体现了程序设计中的问题分解、抽象和信息隐藏的特性。

在这里插入图片描述


No.2 算法

一、算法定义

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

二、算法特性

算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。
算法的设计要求:正确性、可读性、健壮性、高效率和低存储量需求。
算法的度量方法:事后统计方法(不科学、不准确)、事前分析估算方法。

三、函数的渐进增长

函数的渐进增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n > N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐进快于g(n)。

判断一个算法效率时,函数中的常熟和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数。

判断一个算法好不好,我们只通过少量的数据是不能做出准确的判断的。如果我们可以对比某些算法的关键执行次数函数的渐进增长性,基本就可以分析出:某个算法,随着n的增大,它会越来越优于另一算法,或者越来越差于另一算法。

四、算法时间复杂度

1.算法时间复杂度定义

在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。
算法的时间复杂度,也就是算法的时间度量,记作: T ( n ) = O ( f ( n ) ) T(n) =O(f(n)) T(n)=O(f(n))。他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)是问题规模n的某个函数。

这样用大写O()来体现算法时间复杂度的记法,我们称之为大O记法。
一般情况下,随着n的增大,T(n)增长最慢的算法为最优算法。

常见的时间复杂度

执行次数函数举例阶非正式术语
12O(1)常数阶
2n+3O(n)线性阶
3n2+2n+1O(n2)平方阶
5log2n+20O(logn)对数阶
2n+3nlog2n+19O(nlogn)nlogn阶
6n3+2n2+3n+4O(n3)立方阶
2nO(2n)指数阶

所消耗的时间从小到大的比较:

O ( 1 ) < O ( l o g n ) < O ( n ) < O ( n l o g n ) < O ( n 2 ) < O ( n 3 ) < O ( 2 n ) < O ( n ! ) < O ( n n ) O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

2.推导大O阶方法

推导大O阶

  1. 用常数1取代运行时间中的所有加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶项。
  3. 如果最高阶项存在且不是1,则去除与这个项相乘的常数。
    得到的结果就是大O阶。

3.最坏情况和平均情况

我们查找一个有n个随机数字数组的某个数字,最好的情况是第一个数字就是,那么算法的时间复杂度为O(1),但也有可能这个数字就在最后一个位置上待着,那么算法的时间复杂度就是O(n),这就是最坏的一种情况了。
最坏情况运行时间是一种保证,那就是运行时间将不会再坏了。在应用中,这是一种最重要的需求,通常,除非特别指定,我们提到的运行时间都是最坏情况的运行时间。

4.算法空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作: S ( n ) = O ( f ( n ) ) S(n) = O(f(n)) S(n)=O(f(n))其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。

附录

下文链接

数据结构:线性表

专栏

数据结构专栏

参考资料

1、严蔚敏、吴伟民:《数据结构(C语言版)》
2、程杰:《大话数据结构》
3、王道论坛:《数据结构考研复习指导》
4、托马斯·科尔曼等人:《算法导论》

数据结构与算法笔记 数据元素存储在彼此相互独立的内存中,每个独立的元素也叫做结点,每个结点中增加一项数据项用于存储其它相关结点的地址,以此表示结点之间的关系。缺点:添加、删除结点时,可能修改指向第一个结点的指针,参数需要使用二级指针,才能更改指针的指向,比较麻烦。第一个结点的数据域不存储有效元素,仅仅只是使用它的指针域永远指向链表的第一个数据有效的结点。创建、销毁、清空、插入、删除、访问、查询、修改、排序、遍历。数据元素:组成数据的有一定含义的基本单位,也叫做结点、节点、记录。数据项:有独立含义的数据的最小单位,也称为域。.. 阅读详情

相关推荐

数据结构与算法总论

说明:下面的文章小部分是参考了以前学校BBS上面的一篇文章,由于没有留下当时的出处,所以无法写下对这篇文章部分内容的原始作者,特此说明,并表示对他的感谢。 (一)何谓数据结构 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成

MatrixCpp的专栏 3502

数据结构:八种数据结构大全

数据结构 1.1 数据结构概述 数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等; 1.2 数据结构的分类 1.2.1 排列方式 1)集合 集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系; 2)线性结构 线性

緑水長流*z 24万+

警惕!数字签名伪造的攻防演练:用SigThief克隆证书的真实测试(Windows环境)

本文深入探讨了Windows环境下数字签名伪造的攻防技术,详细介绍了使用SigThief工具进行签名提取与克隆的实战步骤。通过真实测试案例,揭示了数字签名安全机制的潜在漏洞,并提供了有效的防御策略和检测技术,帮助安全人员提升系统防护能力。

weixin_42530732的博客 408

数据结构(全)

线性结构, 树形结构, 图结构, 排序, 查找, 数据结构, 算法

s6664的博客 11万+

基于紫光同创FPGA的adf网表文件使用和黑匣子设置

这个时候就可以选择将你的网表文件给到他使用,就是相当于把你的功能模块封装成了一个黑匣子一样,只有外部端口,没有内部代码;,在TOP层的子模块声明里面需要加上/*synthesis syn_black_box */进行黑匣子设置,此时子层 adf 文件作为黑盒是不会综合的,在 device map 时会将顶层综合结果与子层 adf 文件合并传递至布局布线阶段;这些都设置完毕后呢,就可以对工程进行编译和综合了,综合完毕后会生成一个.adf的网表文件,我们要使用的就是这个文件;我这里是把两个子模块的添加了哈;

H2061722的博客 964

高德地图轨迹回放,消息框内展示车辆速度且随车辆移动-升级支持调整速度、回放进度

使用高德地图回放车辆GPS轨迹,并添加速度和回放进度条,并支持调整,效果如下: 新增的功能: 在基础版本,有如下升级 速度条:可以拖动以调整车辆回放速度,且从当前位置继续回放 进度条:进度条表示车辆已回放的百分比,且拖动进度条车辆定位到相应的位置并继续回放 ###思路分析 高德和marker回放相关的API //主要靠他回放 moveAlong(path:Array,speed:Number,f:Function,circlable:Boolean) //点移动到另一个位置,移动进度条车辆跟随移动

博客 1万+

【数据结构】(一)数据结构入门

文章目录数据结构入门1 数据结构基础知识2 算法复杂度 数据结构入门 数据结构+算法=程序数据结构+算法=程序数据结构+算法=程序 1 数据结构基础知识 数据 指所有能输入到计算机中的描述客观事物的符号,包括文本、声音、图像、符号等。 数据元素 数据元素是数据的基本单位,也称节点或记录,如下图所示。 数据项 数据项表示有独立含义的数据最小单位,也称域。若干个数据项构成一个数据元素,数据项是不可分割的最小单位,如上图所示的“86”。 数据对象 数据对象是指相同特性的数据元素的集合,是数据的一个子集。 数据结

weixin_44378835的博客 1万+

ESP32-CAM 赋能 AI 视觉巡检小车:自主避障与目标追踪实现全解析

本文基于 ESP32-CAM 实现了低成本 AI 视觉巡检小车的核心功能,硬件成本<100 元,兼顾自主避障与目标追踪。算法升级:移植 YOLOv5nano 量化模型(INT8),提升目标检测精度(如识别巡检场景中的 “异常物体”“人员”);无线拓展:通过 MQTT 协议将巡检图像、距离数据上传到阿里云 / 腾讯云,实现远程监控;多传感器融合:增加温湿度(DHT11)、红外测温(MLX90614)模块,扩展巡检维度;路径规划:结合 SLAM 算法,实现自主建图与路径巡检。

weixin_42300449的博客 367

数据结构详解:从基本概念到常见数据结构

本文系统介绍数据结构的基本概念、分类及典型应用。从逻辑结构与存储结构出发,阐述线性结构(如数组、链表、栈、队列)与非线性结构(如树、图、哈希表、堆)的特点与适用场景。结合代码示例分析其时间复杂度与实际性能,强调根据访问模式、数据规模和操作频率合理选择数据结构的重要性。最后指出数据结构在操作系统、数据库、网络等系统中的核心作用,是构建高效软件系统的基石。

一名热爱技术、专注实践的工程师,拥有一项实用新型专利及一项软件著作权。曾获国家级奖项7项、省级奖项30余项。专注网络技术与 AI Infra 领域,持续探索技术创新与工程实践,记录学习成长,分享技术经验,在探索中突破,在实践中精进。 834

39、信号流图:解决线性代数方程组的图论方法

本文介绍了信号流图理论在求解线性代数方程组中的应用,重点阐述了Coates方法和Mason方法的原理、步骤及对比分析。通过图论视角,将矩阵运算转化为对有向图结构的分析,利用1-因子、1-阶连接、前向路径和反馈回路等概念,推导出方程组解的拓扑公式。文章结合具体实例演示两种方法的计算过程,并总结其在电路分析、控制系统和通信系统等领域的拓展应用,展示了信号流图理论的直观性与有效性。

pear55的博客 87

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5080

数据结构基本概念与术语详解:逻辑结构、存储结构与ADT入门

数据结构是计算机存储、组织数据的方式,也是算法设计的基础。理解数据元素、数据项、数据对象等核心术语,是掌握数据结构课程的第一步。逻辑结构描述元素间的抽象关系,顺序存储与链式存储则决定其物理实现;抽象数据类型(ADT)通过封装数据与操作,为复杂系统提供清晰接口。在考研408及严蔚敏教材中,这些概念贯穿线性表、树、图等全部章节。无论是编写C语言课程设计,还是准备期末复习,厘清“逻辑结构”与“存储结构”的区别,掌握ADT定义方式,能有效避免概念混淆,提高代码实现的灵活性与可维护性。本文以通俗实例拆解基本术语,帮助

weixin_33552698的博客 296

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

数据结构概念与数组基础详解

而数据结构,就是制定一套规范,让数据有序存储、快速查找、高效修改、合理利用内存。而数组是最简单的线性结构,拥有查询快、增删慢、内存连续、下标访问的典型特征。掌握数组,是学习链表、栈、队列等复杂结构的第一步。因为内存连续、下标精准定位,数组查询数据速度极快,是所有数据结构中查询效率最高的。它也是算法的基础,算法负责处理数据,数据结构负责承载数据。1. 线性结构:数据一对一连续排列,如数组、链表、栈、队列。我们今天学习的数组,就是最基础、最常用的线性数据结构。简单来说,数据结构是计算机存储、组织数据的方式。

HuZhuoling的博客 221

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据结构--基本概念和相关术语

数据结构基本概念及基本术语

Rcain_R的博客 228

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数据结构———基本概念【详细解析】

本篇文章将带大家进入数据结构的学习,了解基本的概念,为之后的学习打下基础

yydsssy的博客 1476

【数据结构与算法】数据结构与算法的基本概念

【数据结构与算法】数据结构与算法的基本概念一、数据结构的基本概念1. 数据结构的定义2. 数据结构的分类2.1 逻辑结构2.2 存储结构二、 算法的基本概念1. 算法是什么2. 算法的时间复杂度与空间复杂度2.1 时间复杂度2.2 空间复杂度

2302_80127404的博客 3024

【数据结构】数据结构与算法基本概念

学习内容:1、用程序代码把现实世界的问题信息化2、用计算机高效地处理这些信息从而创造价值。

m0_75045191的博客 1106

数据结构的基本概念

数据结构的基本概念

weixin_46933728的博客 838

数据结构:基本概念及术语

存储结构是逻辑结构在计算机的具体实现。现在我们来看一下逻辑结构,它是可以被细分的,一种是分为线性结构和非线性结构,另一种则是分为集合结构、线性结构、树状结构和图状结构。这是它们的一些含义:前一种:

2401_85816985的博客 1069

初学学习408之数据结构--数据结构基本概念

数据 : 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。

Z1125994的博客 1170

数据结构基本概念

   数据结构基本概念          数据结构是指数据对象及其相互关系和构造方法,一个数据结构S可以用一个二元组表示为:S=(D,R).其中,D是数据结构中数据的非空有限集合,R是定义在D上的关系的非空有限集合。更详细一点也可以表示成ADT(Abstract data type,抽象数据类型)。ADT定义了数据对象,数据关系,以及数据操作。在数据结构中,结点及结点之间的关系成为数据的逻辑结构,数据在计算机中的存储形式成为数据的存储结构。     数据结构的分类      按逻辑结构划分:线性结构(表、栈

luckyxiaoxuan的专栏 5786
上一篇: Windows下解决端口号被占用
下一篇: windows上使用telnet测试端口号通不通
UniqueUnit
博客等级 码龄9年 4万+粉丝 15原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值