[数据结构]数据结构的基本概念

什么是数据结构?

感觉学过数据结构后有必要再区分一下基本的概念,这样才能更加容易深层次理解后续的内容。那么要搞清楚什么是数据结构那么首先来看一下数据结构的一些基本概念:

数据
数据对象
数据元素
数据元素
数据元素
数据元素
数据项1
数据项2
数据项1
数据项2
数据项1
数据项2
数据项1
数据项2

下面逐个分析其意义:

数据是描述客观事物的符号,是计算机中可以操作的对象, 是能被计算机识别,并输入给计算机处理的集合。有两个特点:1.能输入到计算机 2.能被计算机程序处理
数据对象(人类)性质相同的数据元素的集合(指数据元素有相同数量和类型的数据项)
数据元素(人)是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称作记录
数据项(眼,手)一个元素可以由若干个数据项组成,是数据不可分割的最小单位。(数据元素才是数据结构中建立数据模型的着眼点)

数据结构:(结构即关系)比如分子结构,就是说组成分子的原子之间的排列方式。由此给出数据结构的定义:
数据结构是相互之间存在的一种或多种特定关系的数据元素的集合


分清逻辑结构与物理结构

逻辑结构

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

物理结构

物理结构是指数据的逻辑结构在计算机中的存储形式。分为顺序存储结构和式存储结构
顺序存储结构:指数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的
链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的

抽象数据类型

数据类型

数据类型:是指一组性质相同的值得集合及定义在此集合上的一些操作的总称

比如在c语言中,按照值得不同数据类型可以分为两类

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

抽象数据类型

抽象是指抽取出事物具有的普遍性的本质。对已有数据类型进行抽象,就有了如下定义:

抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作

注意:抽象数据类型的定义仅仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关

一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作,至于到底有哪些操作,则由设计者根据实际需要决定。其标准格式为:

ADT 抽象数据类型名
Data
    数据元素之间逻辑关系的定义
Operation
    操作1
        初始条件
        操作结构描述
    操作2
    ...
    操作n
    ...
endADT

抽象数据类型体现了程序设计中问题分解,抽象和信息隐藏的特性

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在C++中,数据结构是指一种组织和存储数据的方式。在这段代码中,使用了结构体来定义一个节点(node),节点包含了两个整数变量x和y。结构体中还重载了小于号运算符,用于比较节点的大小。主函数中使用了优先队列(priority_queue)来存储节点,并按照节点的x值从大到小进行排序。然后通过遍历优先队列,输出节点的x和y值。\[1\] 引用\[2\]:在C++中,vector是一种动态数组容器。它可以根据需要自动调整大小,并且支持多种构造函数。例如,可以使用默认构造函数创建一个空的vector,也可以使用拷贝构造函数将一个vector的元素拷贝给另一个vector。另外,还可以使用带有两个迭代器参数的构造函数,将一个区间内的元素拷贝给vector,或者使用带有一个整数参数和一个元素参数的构造函数,将指定数量的相同元素拷贝给vector。\[2\] 引用\[3\]:这段代码是一个关于图的遍历的例题。首先,根据输入的节点数量n和边的数量m,使用并查集来判断图是否联通。然后,统计图中奇点的数量,如果奇点的数量为0或者2,则存在欧拉回路。最后,根据判断结果输出相应的结果。\[3\] 综上所述,C++中的数据结构基本概念包括使用结构体来定义节点,使用优先队列来排序节点,使用vector来存储动态数组,以及使用并查集来判断图的连通性和欧拉回路的存在性。 #### 引用[.reference_title] - *1* *2* [C++之STL基础概念、容器、数据结构](https://blog.csdn.net/Pxx520Tangtian/article/details/126764518)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [c++数据结构-图(详解附算法代码,一看就懂)](https://blog.csdn.net/m0_64036070/article/details/128737229)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值