抽象数据类型

数据结构基本概念

三世轮回 提交于 2019-12-06 01:39:33
数据结构基本概念 1 数据:数据是用来描述现实世界的数字、字符、图像、声音,以及能够输入到计算机中并能被计算机处理的符号集合 2 数据元素: 数据元素是数据的基本单位 ,在计算机中通常作为一个整体进行考虑和处理,通常也称为“元素”、“记录”、“节点”等 3 数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集 4 数据结构:在实际问题中,数据元素不是孤立存在的,而是在相互之间存在一种或多种特定的关系,这种数据元素相互间的关系称为“数据结构“ 注:我觉得应该重点理解”数据元素“和”数据结构“ 数据元素举例:在学生信息表中,可能含有姓名、学号、性别等字段(属性),每个学生的信息可以称为一条记录,也就是一个数据元素,并且一般作为整体处理 数据结构:包含数据逻辑结构和数据存储结构两方面的描述 一、数据的逻辑结构 1 集合结构 : 集合结构的数据元素除了同属于一个集合外,他们之间没有任何联系. 2 线性结构 : 数据元素存在”一对一”的关系 3 树形结构 : 数据元素存在”一对多”的关系 4 图形结构 : 数据元素存在”多对多”的关系 二、数据的存储结构 数据的存储结构就是数据元素及其相互关系的存储方式。要想用计算机处理数据,就必须把数据的逻辑结构映射为数据的存储结构。 按照数据的存储结构,一般将数据结构分为顺序存储结构、链式存储结构、索引存储结构和散列存储结构。 1

线性表

南楼画角 提交于 2019-12-04 19:00:43
一、线性表定义   线性表(List):由零个或多个数据元素组成的有限序列。(类似生活中排队) 关键点: (1)序列:元素之间先来后到,有顺序 (2) 若元素多个,第一个元素无前驱,最后一个无后继,其他元素都有且只有一个前驱和后继 (3)线性表强调有限的   例:a1,...,ai-1,ai.ai+1,...an,表中ai-1是ai的直接前取元素,ai+1是ai的直接后继元素。 线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。 二、抽象数据类型 数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。对已有的数据类型进行抽象,就有了抽象数据类型。 抽象数据类型(Abstract Date Type,ADT)是指一个数据模型及定义在该模型上的一组操作。取决于一组逻辑特性,而与其在计算机内部如何表示和实现无关。 ADT 抽象数据类型名 Data 数据元素之间逻辑关系的定义 Operation 操作 endADT 来源: https://www.cnblogs.com/wy9264/p/11878980.html

高级程序设计语言概述

夙愿已清 提交于 2019-12-04 12:14:40
常用的高级程序设计语言 常用的高级程序设计语言 语言 特点 FORTRAN 数值计算 COBOL 事务处理 PASCAL 结构化程序设计 LISP 函数式程序设计 PROLOG 逻辑程序设计 C 系统程序设计 Smalltalk 面向对象程序设计 Java Internet应用,可移植性 Python 解释型 高级程序设计语言的优点 相对机器语言或汇编语言,高级程序设计语言 更接近于数学语言和工程语言,更直观、自然和易于理解 更容易验证其正确性、改错 编写程序的效率更高 更容易移植 程序设计语言的定义 标识符是语法概念,名字是语义概念 语法 程序本质上是一定字符集上的字符串 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序 词法规则:单词符号的形成规则 单词符号是语言中具有独立意义的最基本结构 一般包括:常数、标识符、基本字、算符、界符等 描述工具:有限自动机 语法规则:语法单位的形成规则 语法单位通常包括:表达式、语句、分程序、过程、 函数、程序等; 描述工具:上下文无关文法 E→i E→E+E E→E*E(不能理解成乘号) E→(E) 语法规则和词法规则定义了程序的形式结构 定义语法单位的意义属于语义问题 语义 语义 一组规则,用它可以定义一个程序的意义 描述方法 自然语言描述 二义性、隐藏错误和不完整性 形式描述 操作语义 指称语义 代数语义 语用

C++回顾――数据抽象

匿名 (未验证) 提交于 2019-12-03 00:39:02
一、动态内存分配 堆是很大的内存块,用以在运行时分配一些小的存储空间。在写程序时,如果还不知道所需内存的大小,就可使用堆。在标准C中,动态内存分配函数包括malloc()、calloc()、realloc()、free()。C++中,使用new和delete。任何时候申请内存都有可能失败,要判断内存是否分配成功。 注意,堆管理器是相当简单的,它给出一块内存,而当用delete释放时又把它收回。这里没有提供能压缩堆获得较大的空闲块的堆压缩内部工具。如果程序反复分配和释放堆存储,最终将会产生大量的空闲内存碎片,但却没有足够大的块能分配所需的内存。堆压缩器使程序更复杂,因此要前后移动内存块(锁定内存后堆压缩器就不能移动它了),所以指针应保持正确的值。在C值,可以赋void*给任何指针(C对类型信息不挑剔,它允许未明确类型的指针赋给一个明确类型的指针);但在C++中,是不允许的(C++中有严格的类型检查,C++允许将任何类型的指针赋给void*)。 二、基本对象 把函数放进结构体中是从C到C++中的根本改变。在C中,struct是数据的凝聚(它将数据捆绑在一起);而C++中,struct既能描述属性,又能描述行为。 对象就是变量,是一块存储区(能存放数据,而且还隐含着对这些数据进行处理的操作)。 三、抽象数据类型 封装(encapsulation):将数据连同函数捆绑在一起

2019-2020-1学期 20192421 《网络空间安全专业导论>>第四周学习总结

若如初见. 提交于 2019-12-03 00:22:48
通过这周的自主学习,我在第八章学到了很多有关抽象数据类型与子程序的知识。在计算机领域,这些抽象的容器称为抽象数据类型,第八章第一节就对此进行了阐述。 第八章 抽象数据类型与子程序第八章 抽象数据类型与子程序 8.1 抽象数据类型 抽象数据类型(ADT) 是属性(数据与操作)明确的与特定实现分离的容器。 在计算领域可以从应用层,逻辑层,实现层三个方面观察数据。 1.应用层:特定问题中的数据的视图。 2.逻辑(或抽象)层:数据值(域)和处理它们的操作的抽象视图。 3.实现层:明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码。 结构数据 是一种抽象数据类型中的复合数据域的实现。 容器 是存放和操作其他对象的对象。 8.2 栈 栈和队列 是抽象复合结构, 8.3 队列 栈只能从一端访问栈中的元素(后进先出),或删除的项总是在栈中时间最短的项目。 队列中的项目从一端入,从另一端出。 8.4列表 列表有三个属性特征,项目是同构的,项目是线性的,列表是变长的。 链式结构是一个将数据项和找到下一项位置的信息保存在同一容器的实现方法。 8.5 树 分层体系结构叫做树。 二叉树是一种抽象结构,其中每个节点可以有两个后继节点,叫做子女节点,唯一的起始节点叫做根,没有子女的树节点叫做叶节点。 8.6图 图是由一组节点和一组吧节点相互连接起来的边构成的数据结构。 顶点是图中的节点。 边(弧

2019-2020-1学期 20192421 《网络空间安全专业导论>>第四周学习总结

匿名 (未验证) 提交于 2019-12-03 00:15:02
通过这周的自主学习,我在第八章学到了很多有关抽象数据类型与子程序的知识。在计算机领域,这些抽象的容器称为抽象数据类型,第八章第一节就对此进行了阐述。 抽象数据类型(ADT) 是属性(数据与操作)明确的与特定实现分离的容器。 在计算领域可以从应用层,逻辑层,实现层三个方面观察数据。 1.应用层:特定问题中的数据的视图。 2.逻辑(或抽象)层:数据值(域)和处理它们的操作的抽象视图。 3.实现层:明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码。 结构数据 是一种抽象数据类型中的复合数据域的实现。 容器 是存放和操作其他对象的对象。 8.2 ջ 栈和队列 是抽象复合结构, 栈只能从一端访问栈中的元素(后进先出),或删除的项总是在栈中时间最短的项目。 队列中的项目从一端入,从另一端出。 列表有三个属性特征,项目是同构的,项目是线性的,列表是变长的。 链式结构是一个将数据项和找到下一项位置的信息保存在同一容器的实现方法。 分层体系结构叫做树。 二叉树是一种抽象结构,其中每个节点可以有两个后继节点,叫做子女节点,唯一的起始节点叫做根,没有子女的树节点叫做叶节点。 8.6ͼ 图是由一组节点和一组吧节点相互连接起来的边构成的数据结构。 顶点是图中的节点。 边(弧)表示图中的两个节点的连接的顶点对。 无向图是其中的边没有方向的图。 有向图是其中的边是从一个顶点指向另一个顶点的图。

二叉树的抽象数据类型定义

匿名 (未验证) 提交于 2019-12-02 23:56:01
类型名称 :二叉树 数据对象集 :一个有穷的结点集合。 若不为空,则由根结点和其左、右二叉子树组成。 操作集 : BT ∈ BinTree, Item ∈ElementType,重要操作有: 1、Boolean IsEmpty( BinTree BT ): 判别BT是否为空; 2、void Traversal( BinTree BT ):遍历,按某顺序访问每个结点; 3、BinTree CreatBinTree( ):创建一个二叉树。 常用的遍历方法有: void PreOrderTraversal( BinTree BT ):先序----根、左子树、右子树; void InOrderTraversal( BinTree BT ): 中序―左子树、根、右子树; void PostOrderTraversal( BinTree BT ):后序―左子树、右子树、根 void LevelOrderTraversal( BinTree BT ):层次遍历,从上到下、从左到右 来源:51CTO 作者: chenmo2019 链接:https://blog.csdn.net/chenmo2019/article/details/100140681

抽象数据类型三元组的定义

匿名 (未验证) 提交于 2019-12-02 23:49:02
主要功能:构造三元组;销毁三元组;用e返回T的第i元的值;置T的第i元的值为e;判断是否为升序排列;判断是否为降序排列;求最大值;求最小值;显示三元组。 1 #include <stdio.h> 2 #include <stdlib.h> 3 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<自定义数据类型<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 4 typedef int Status; 5 typedef int ElemType; 6 typedef ElemType *Triplet; 7 #define OVERFLOW -2 8 #define OK 1 9 #define ERROR 0 10 //---------------------------------------------构造三元组T----------------------------------------------- 11 Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3) 12 {//构造三元组T,依此置T的三个元素的初值为v1,v2,v3 13 T=(ElemType*)malloc(3*sizeof

20192430屿 20192430屿 2019-2020-1学期 20192430 《网络空间安全专业导论》第四周学习总结

谁说胖子不能爱 提交于 2019-12-02 23:46:26
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 抽象数据类型 抽象数据类型:属性(数据和操作)明确地 与特定实现分离的容器 数据结构:一种抽象数据类型中的复合数据 域的实现 容器:存放和操作其他对象的对象 栈 栈是一种抽象复合结构,只能从一端访问。会计师称其 为LIFO,删除的项总是在栈中间时间最短的项目。我们 把项目推进栈,从栈中弹出项目。栈没有长度属性,所 以没有返回栈中项目个数的操作。我们要确定栈是否为 空的操作,因为当栈空的时候再弹出项目会出错 队列 一端入一端出,被称为FIFO,插入操作在尾部进行,删 除操作在头部进行。删除的总是在队列中时间最长的项 目 列表 提供插入一个项目(Insert)、删除一个项目(Delete )、检索一个项目是否存在(IsThere)以及报告列表中 项目数量(GetLength)。列表可以被形象化为链式结构 链式结构(linked structure):一个将数据项和找到下一项位置的信息保 存到同一容器的实现方法。 树 二叉树 每个节点可以有两个后继节点,称为子女,树的头部是 一个起始节点,叫做根 树中的每个节点可以有0、1、2个子女,分左子女和右 子女,如果一个节点没有子女,则这个节点叫做树叶 二叉树(binary tree):具有唯一起始节点(根节点)的抽象复合结构

2019-2020-1学期 20192418 《网络空间安全专业导论》第四周学习总结

岁酱吖の 提交于 2019-12-02 21:27:26
通过这周的自主学习,我学到了很多有关抽象数据类型与子程序的知识。在计算机领域,这些抽象的容器称为抽象数据类型,我们知道他们的属性和操作,理解它们可以包含哪些类型的值,但是没有关于其内部结构或实现的信息。也就是说,我们知道操作和它们所做的事情,但是不知道操作如何实现。第八章解答了我的疑惑。 抽象数据类型是属性明确的与特定实现分离的容器。 结构数据是一种抽象数据类型中的复合数据域的实现。 容器是存放和操作其他对象的对象。 栈和队列是抽象复合结构,栈只能从一端访问栈中的元素,队列中的项目从一端入,从另一端出。 列表有三个属性特征,项目是同构的,项目是线性的,列表是变长的。 链式结构是一个将数据项和找到下一项位置的信息保存在同一容器的实现方法。 分层体系结构叫做树,二叉树是一种抽象结构,其中每个节点可以有两个后继节点,叫做子女,起始节点叫做根,没有子女的树节点叫做叶节点。 图是由一组节点和一组吧节点相互连接起来的边构成的数据结构。 顶点是图中的节点,边表示图中的两个节点的连接的顶点对。 无向图是其中的边没有方向的图。 有向图是其中的边是从一个顶点指向另一个顶点的图。 邻顶点是通过边连接的两个顶点。 路径连接图中两个顶点的一系列顶点。 参数列表程序中两部分之间的通讯机制。 形参是列在子程序后的括号中的标识符 实参是子程序调用中列在括号中的标识符。 值参由调用单元传入实参的副本的形参。