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

零度安全 等级 867 0 0

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

数据

  • 数据是输入计算机且能被计算机处理的各种符号的集合
  1. 信息的载体
  2. 是对客观事物的符号化的表示
  3. 能被计算机识别,存储和加工
  • 数据包括
  1. 数值型数据:整数,实数等。
  2. 非数值型数据:文字,图像,图形,声音等。

数据元素和数据项

数据元素

  • 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。如下图一行可以是一个整体,所以是一个数据元素。
  • 也称之为元素,或称其为记录,结点,或者顶点。
  • 一个数据元素又可以有多个数据项组成

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

数据项

  • 数据项构数据元素的不可分割的最小单位
  • 下图中的一条数据记录(数据元素)有多个数据项构成。

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

总结

数据,数据元素,数据项之间的关系:

数据>数据元素>数据项

例如:学生表>个人记录>学号,姓名........

数据对象

  • 性质相同数据元素的集合,是数据的一个子集

数据对象与数据元素的区别

  • 数据元素------组成数据的基本单位,与数据的关系是:集合的个体

  • 数据对象------性质相同的数据元素的集合,与数据的关系:是集合的子集

数据结构

  • 数据元素不是孤立存在的,它们存在着某种关系,数据元素相互之间的关系称为结构

  • 是指相互之间存在一种或者多种特定的关系的数据元素的集合

  • 或者说,数据结构是带结构的数据元素的集合

数据结构包括的内容

  • 数据元素之间的逻辑关系,也称为逻辑结构
  • 数据元素及其关系在计算机内存中的表示(又称为映像),称为数据的物理结构或数据的存储结构。
  • 数据的运算实现,既对数据元素可以施加的操作以及这些操作在相应的存储结构上的实现

逻辑结构

  • 描述数据元素之间的逻辑关系
  • 与数据结构的存储无关,独立于计算机。
  • 具体的问题抽象出来的数学模型
逻辑结构的种类
划分方法一
  1. 线性结构:有且只有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和直接后继。比如线性表,栈,队列,串。(一对一
  2. 非线性结构:一个结点可以有多个true直接前趋和直接后继。例如最短路径问题和人机对弈问题。树和图。(多对多
划分方法二
  1. 集合结构: 结构中的数据元素除了同属于一个集合的关系外,无其他任何关系。
  2. 线性结构:结构中的数据之间存在着一对一的线性关系。
  3. 树形结构:结构中的元素之间存在着一对多的层次关系。
  4. 图状结构或网状结构:结构中的数据元素存在着多对多的任意关系。

物理结构(存储结构)

  • 是数据结构及其关系在计算机存储器的结构(存储方式)。
  • 是数据结构在计算机中的表示。
存储结构的种类
  1. 顺序存储结构:用一组连续的存储单元按照数据元素的顺序依次的存储数据元素,根据元素之间的逻辑关系由元素的存储位置来表示。类似于C语言的连续数组。
  2. 链式存储结构:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。例如C语言中的指针来实现链式存储和结构,存储元素的同时,在给与一个指针指向另一个元素。我们在存储一个元素本身的同时,还存储了下一个元素的地址
  3. 索引存储结构
  4. 散列存储结构

数据结构和存储结构的关系

  • 存储结构是逻辑关系的映像与元素的映像。
  • 逻辑结构是数据结构的抽象,存储结构是数据结构的实现。
  • 两者综合起来建立了数据元素之间的数据结构。
收藏
评论区

相关推荐

C++概述
概述 C 是静态,可编译,通用,大小写敏感,格式自由的编程语言,它支持程序化,面向对象的,和泛型编程方式。 C 被看作是中间层语言,因为它同时包含了低级语言和高级语言的特性。 C 是于 1979 年在新泽西的茉莉山丘的贝尔实验室由 Bjarne Stroustrup 开发的,它是 C 语言的加强版,最开始它被称作 “C with Classes”,但是
计算机专业,如何轻松学习C/C++编程?
C/C 是比其他语言难些,但差距不大。以往很多人说 C/C 难,那是旧时代的产物。那时操作系统(例如 DOS)还没有如今这么强大的功能,像界面设计和底层设计都要靠应用程序来实现。由于 C 的高效率,高端设计大都用 C 语言和汇编语言来写,程序搞得很复杂,初学者有望尘莫及的感觉。C 的简捷表达法比 Fortran, Cobol, Pascal 和 BASIC
数据结构----基本概念和术语
数据结构基本概念和术语 数据 数据是输入计算机且能被计算机处理的各种符号的集合 1. 信息的载体 2. 是对客观事物的符号化的表示 3. 能被计算机识别,存储和加工 数据包括 1. 数值型数据:整数,实数等。 2. 非数值型数据:文字,图像,图形,声音等。 数据元素和数据项
使用 VS Code 来开发和调试 Python 程序
(简称 VSCode)是微软出品的一款支持多种语言的免费 IDE(集成开发环境)。VSCode 轻量而强大,支持 Windows、macOS 和 Linux。内置支持 JavaScript、TypeScript 和 Node.js,并且拥有一个丰富的插件生态系统来支持其它语言(C/C、C、Java、Python、PHP、Go 等)和运行时(.Net 和
C++ 能够让你更深入底层。
C++作为一门底层可操作性很强的语言,广泛应用于游戏开发、工业和追求性能、速度的应用。 比如鹅厂,无论游戏,还是IM,整个体系的后台几乎都是 C++ 开发,**对 C++ 开发者的需求非常大**。 但问题是C++入门和精通都比较困难,所以市面上的优秀人才很少。 因此网上有句话说“**C++就是入职大厂的敲门砖!**”
C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件 #include<stack> #include<queue> 定义栈如下: stack<int> stk; 定义队列如下: queue<int> q; 栈提供了如下的操作 s.empty() 如果栈为空返回true,否则返回fals
C++ ORM ODB 入门介绍(一)
:::欢迎广大oscer拍砖和交流. C++的语言特性决定了在C++中的ORM框架不可能像Java,C#那没有那么灵活。 C++的ORM框架一般都是基于模板,编译时,因此其效率比起Java中的ORM框架更高。 ODB是一个比较独立,成熟的基于C++Template的ORM框架。使用#pragma编译指令和ODB.exe编译器生成SQL的特化版本。#pr
ACM中Java的应用
先说一下Java对于ACM的一些优点吧: (1) 对于熟悉C/C++的程序员来说Java 并不难学,两周时间基本可以搞定一般的编程,再用些时间了解一下Java库就行了。Java的语法和C++非常类似,可以说是C++的升级版,只是更加强调面向对象思想而已。(个人见解。。。) (2) 在一般比赛中,Java程序会有额外的时间和空间,但真正进行大规模运算时J
Android Studio 使用NDK编译jni
试用了Android Studio一段时间,发现这东西不支持C/C++,而且创建工程也只能创建Android的工程.这可苦恼死我了.... 网上找了找,大多人都说是AndroidStudio和Eclipse之间来回切换..这不悲剧吗? 在AndroidStuido的Setting-Plugins中发现有C/C++的插件,安装后发现自己能力有限,不会玩这东
C# lambda 和 Linq
本章节给大家带来的是Lambda 和 Linq 的关系 Lambda : 是实例化委托的一个参数,也就是一个方法 Linq:是基于委托(lambda)的封装,代码重用,逻辑解耦,是一个帮助类库,linq是用泛型,委托,lamda实现的,总的来说:把对数据操作的通用部分完成,把可变的交给委托,使用者只关心可变部分。 **一、Lambda** 文章的开始
C++ Concurrency in Action, 2nd Edition 免积分下载
![](https://static.oschina.net/uploads/img/201901/06114537_YLMQ.jpg) C ++ 11为多线程应用程序提供了强大的支持,随后的C ++ 14和17更新建立在这个基线上。C ++具有比以往更好的并发选项,这意味着它对于多核和并行应用程序来说是一个非常强大的选项 这本畅销书已经更新和修订,以涵
C++ 、java 和 C# 的区别
### 一、基础类型 **c++:** ![file](https://oscimg.oschina.net/oscnet/up-a9755823aa67cde64008292ce91c06adb33.png) \*\* java:\*\* ![file](https://oscimg.oschina.net/oscnet/up-983f3b117d6f
C++之max和max_element
C++之max和max\_element ==================== std::max() ========== Returns the greater of `a` and `b`, or the values in initializer list `ilist` 。it can use operator< to compare the
C++练习(coursera北大c++课后习题)
week3 #1 ### 描述 下面程序输出的结果是: 0 5 请填空: 1 #include <iostream> 2 using namespace std; 3 class A { 4 public: 5 int val; 6 // 在此处补充你的代码 7 };
Full
Full-Stack Engine ================= Full-Stack Engine is a MultiPlay-Game-Develop Engine 全栈开发引擎是一个多人游戏开发引擎,具有上手快,低成本,功能强大,释放生产力,高性能等优势。 ### Feature: 1.基础技术栈 C/C++ C# Lua 2.客户端

热门文章

最新文章