抽象数据类型

2. 第 2 章 抽象数据类型

孤人 提交于 2020-01-23 00:14:53
1. 算法与数据结构应该以巧妙的方式结合起来,达到解决问题的目的,并提高效率。 2. 数据的静态组织和动态的操作算法,构成了ADT。一旦选择了某种数据结构,ADT的性能也可以确定。由此得知,抽象数据类型的挑选本质上是确定其数据结构。 3. 用数组存放数据,会出现空间超出不够用或浪费用不完的情况(即使是动态分配的数组,也会出现这种情况)。 vector 则很好的解决了这个问题(它是一个动态分配的数组,但是提供了很好的动态化策略)。 4. 如果数据在数组中有序存储,那么增删都会比较麻烦。(vector 在内存中也是连续存储的)。为了应对数据动态变化,必须要打破连续存储的物理形态,于是链表应运而生( list 容器)。 5. 二叉查找树结合查找和链接,使得增删元素可以高效的实现。需要注意,平衡性是二叉查找树的重要指标,一旦失去平衡,查找效率就会急剧下降,可以限定结点的平衡程度来提升查找性能。 6. 在观察不同数据结构实现的同时,应该发现数据结构不仅给出静止的逻辑结构,更应该发现它给出了从一个状态到另一个状态的迁移规则。 7. 从不同的数据结构中进行选择,标准是通过分析完成任务的总时间来确定使用何种抽象数据类型。 8. STL是一套由模板写成的标准库,给出了多种常用的容器。容器可以说是抽象数据类型,它能容纳任何类型的对象,并在内部按照一定的数据结构将对象组织起来。 9.

数据结构的基本概念

扶醉桌前 提交于 2020-01-18 08:41:43
数据元素:是组成数据的、有一定意义的基本单位。在计算机中通常作为总体处理。也被称为记录。 数据项:一个数据元素能够有若干个数据项组成。 数据项是数据不可切割的最小单位。 数据对象:是性质同样的数据元素的集合。是数据的子集。 结构:结构是指各个组成部分相互搭配的排列的方式。不容数据元素之间不是独立的。而是存在特定关系,我们将这些特定关系的称为结构。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 逻辑结构:是指数据对象中数据元素之间的相互关系。 分为下面四种: 1、集合结构: 集合结构的数据元素除了通数据一个集合外,它们之间没有其它关系。 各个数据元素是“平等”的。他们的共同属性是“同属于一个集合”。数据结构中的集合关系就类似数学中的集合。 2、线性结构:线性结构中的数据元素之间的一对一的关系。 3、树形结构:树形结构中的数据元素之间存在一种一对多的层次关系 4、图形结构:图形结构的数据元素是多对多的关系。 物理结构:(存储结构)指数据的逻辑结构在计算机中的存储形式。存储器主要是针对内存而言,像硬盘、软盘、光盘等外部存储器的数据组织通经常使用文件结构描写叙述。 数据的存储元素直接按的逻辑关系。是实现物理结构的重点和难点。 数据元素的存储结构形式有两种:顺序存储和链式存储。 1、顺序存储结构:是把数据元素存放在地址连续的存储单元里。其数据间的逻辑关系和物理关系是一致的。

数据结构学习笔记——第一章 基本概念

无人久伴 提交于 2020-01-15 01:59:01
数据结构学习笔记——第一章 基本概念 第一章 基本概念 1.1 什么是数据结构 1.1.1 关于数据组织 1.1.2 关于空间使用 1.1.3 关于算法效率 1.1.4 抽象数据类型 什么是数据结构? 抽象数据类型(Abstract Data Type) 1.2 什么是算法 1.2.1 算法的定义 1.2.2 什么是好的算法 1.2.3 复杂度的渐进表示 1.3 应用实例 第一章 基本概念 1.1 什么是数据结构 1.1.1 关于数据组织 1.1.2 关于空间使用 1.1.3 关于算法效率 1.1.4 抽象数据类型 什么是数据结构? 数据对象 在计算机中的组织方式 逻辑结构 物理存储结构 数据对象必定与一系列加在其上的 操作 相关联 完成这些操作所用的方法就是 算法 抽象数据类型(Abstract Data Type) 数据类型 数据对象集 数据集合相关联的操作集 抽象 :描述数据类型的方法不依赖于具体实现 与存放数据的机器无关 与数据存储的物理结构无关 与实现操作的算法和编程语言均无关 只描述数据对象集和相关操作集“ 是什么 ”,并不涉及“ 如何做到 ”的问题 1.2 什么是算法 1.2.1 算法的定义 算法(Algorithm) 一个有限指令集 接受一些输入(有些情况下不需要输入) 产生输出 一定在有限步骤之后终止 每一条指令必须 有充分明确的目标,不可以有歧义

数据结构的基本知识、算法

老子叫甜甜 提交于 2020-01-13 01:01:03
数据结构的基本知识 下面的都是摘自《大话数据结构》书中的内容,记下来可以时时查看: 数据:描述客观事物的符号,计算机可以操作的对象; 数据元素:组成数据的有一定意义的基本单位,作为整体能被计算机处理;人是人类的数据元素,牛马是牲畜类的数据元素 数据项:组成数据元素,人的眼睛耳朵就是人这个数据元素的数据项; 注意:数据项是数据的最小单位,不过讨论问题时数据元素才是数据模型的着眼点。 数据对象:性质相同的数据元素的集合,数据的子集 数据结构:相互存在关系的数据元素的集合。 逻辑结构、物理结构 逻辑结构:是指数据对象中数据元素之间的相互关系 集合结构,线性结构,树形结构,图形结构 物理结构:是指数据的逻辑结构在计算机中的存储形式 顺序存储结构,把数据元素存放在地址连续的存储单元里 链式存储结构,数据元素存储在在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系不能反应逻辑关系,因此需要一个指针存放数据元素的地址。 逻辑结构面向问题,物理结构面向计算机。 抽象数据类型 数据类型:一组性质相同的值的集合及定义在次集合上的一些操作的总称。 抽象数据类型:是指一个数学模型及定义在该模型上的一组操作。 一个抽象数据类型定义了:一个数据对象、数据对象中个数据元素之间的关系及对数据元素的操作。 抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性

累加器抽象数据类型

你。 提交于 2020-01-12 11:50:27
一 累加器抽象数据类型API public class Accumulator Accumulator() 创建一个累加器 public void addDataValue(double x) 添加一个新的数据值 public double mean() 所有数据的平均值 public String toString() 对象的字符串表示 二 典型用例 package MyAccumulator; import common.Accumulator; import common.StdOut; import common.StdRandom; /** * Copyright (C), 2020-2020, XXX有限公司 * FileName: MyAccumulator * Author: cakin * Date: 2020/1/11 * Description: 累加器测试 */ public class MyAccumulator { public static void main( String[] args ) { int T = Integer.parseInt(args[0]); Accumulator a = new Accumulator(); for(int t = 0;t<T;t++){ a.addDataValue(StdRandom.uniform())

日期抽象数据类型的两种实现

心已入冬 提交于 2020-01-11 23:23:19
一 日期抽象数据类型API public class Date Date(int month,int day,int year) 创建一个日期 int day() 日 int month() 月 int year() 年 String toString() 对象的字符串表示 二 测试用例 package MyDate; /** * Copyright (C), 2020-2020, XXX有限公司 * FileName: Test * Author: cakin * Date: 2020/1/11 * Description: Date日期测试 */ public class Test { public static void main( String[] args ) { int m = Integer.parseInt(args[0]); int d = Integer.parseInt(args[1]); int y = Integer.parseInt(args[2]); BasicDate date1 = new BasicDate(m,d,y); SmallDate date2 = new SmallDate(m,d,y); System.out.println(date1); System.out.println(date2); } } 三 BasicDate的实现

算法与数据结构 开篇概论

被刻印的时光 ゝ 提交于 2019-12-29 21:26:40
线索 数据结构课程的概论,从以下这条线索进行阐述: 问题 -> 数学化(数学建模) -> 选择数据结构DataStructure -> 算法Algorithm 及 设计步骤 -> 验证正确性 -> efficient效率检验 -> 程序实现 数据结构 和 数据类型 何为数据结构? 数据结构描述了数据对象之间的结构关系,是相互之间具有一种或者多种特定关系的数据集合。 数据结构,是抽象数据类型ADT的物理实现。 为什么要使用数据结构? 我们需要解决大量的非数值计算问题,由于问题求解的需要,我们经常要自定义一些数据类型和它的一些基础运算,来便于我们解决这些问题。因此我们有了 抽象数据类型(自定义的数据类型) 与 数据结构(抽象数据类型的物理实现)。 数据结构需要考虑哪些问题? (1)数据的逻辑结构:主要分为 线性结构 和 非线性结构。 线性结构有 线性表(数组),队列queue,栈stack等等;非线性结构有 树tree,图map,集合set等等。 (2)数据的物理结构:由数据的逻辑结构决定,在内存中的存储方式,有 连续的 和 不连续的 两种。 连续:在内存中按 连续的相对位置 存放(数组);不连续:在内存中按 无序的相对位置 存放,由指针来确定位置。 (3)数据的运算:为了解决非数值问题,需要定义数据类型,实现数据结构,并定义数据类型的相关计算。 何为抽象数据类型ADT

基础数据结构

别说谁变了你拦得住时间么 提交于 2019-12-21 23:45:06
java - 数据结构 - 基础数据结构 整理所学,期待批评指教 基础概念 数据 描述客观事物的数值、字符以及能输入到计算机中且能被处理的各种符号集合 数据元素 组成数据的基本单位,数据集合的个体,计算机中通常作为一个整体进行考虑 数据对象 性质相同的数据元素的集合,数据的一个子集 数据结构 相互之间存在一种或多种特定关系的数据元素的集合 是一个二元组: D —>数据有限集 R —>D上关系的有限集 Data_Stracture = (D, R) 数据类型 性质相同的值集合以及定义在这个值集合上的一组操作的总称。 数据抽象与抽象数据类型 抽象数据类型(Abstract Data Type)ADT 含义:数据模型及定义在数据模型上的操作 特征:使用与实现分离,实现信息封装及隐蔽 抽象数据类型实现 1.面向过程设计 逻辑架构—>选定存储结构,操作要求—>设计子程序或子函数 2.“包”,“模型”设计方法 可单独编译,同时提供了外部使用的方便 3.面向对象程序设计(Object Oriented Programming,OOP) 着眼于应用问题涉及的对象,包括对象,对象属性和要求 1.数据结构内容 1.1 数据的逻辑结构 数据逻辑间关系的描述 依据数据间不同关系划分 集合结构:结构中数据元素除同属于一个集合外无任何关系 线性结构:结构中数据元素存在着一对一的线性关系 树型结构

大话数据结构笔记——第一章 数据结构绪论

拟墨画扇 提交于 2019-12-06 08:34:48
第一章 数据结构绪论 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 1.1 数据结构的起源 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。 程序设计数据结构算法 1.2 基本概念和术语 1.2.1 数据 数据 是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合。 数据是具备以下两个前提的符号: 1.可以输入到计算机中。 2.能被计算机程序处理 什么是数据? 【举例】整型、实型等数值类型,字符、声音、图像、视频等非数值类型。 1.2.2 数据元素 数据元素 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。 什么是数据元素? 【举例】猪、马、牛、羊等是畜类的数据元素。电影中的每一个角色是电影的一个数据元素。 1.2.3 数据项 数据项: 一个数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。 什么是数据项? 【举例】电影中有许多角色,每个角色都有姓名、年龄、联系电话等数据项。 1.2.4 数据对象 数据对象 是性质相同的数据元素的集合,是数据的子集。 什么是数据对象? 【举例】比如多个学生信息组成的一个学生表,称为一个数据对象。 1.2.5 数据结构 现实生活中, 不同的数据元素之间不是独立的,而是存在特定的关系

数据结构与算法1.3_MOOC笔记

妖精的绣舞 提交于 2019-12-06 07:56:12
2019.12.2 1.3数据结构与抽象数据类型 学习记录 1.2什么是数据结构 ​ 结构:实体 + 关系 数据结构的组合: 逻辑,存储,运算三个方面: 按照逻辑关系组织起来的一批数据 按一定的存储方法把它存储在计算机中 在这些数据上定义了一个运算的集合 数据结构的逻辑组织: 线性结构 线性表(表,栈,队列,串等)[前驱后继关系] 非线性结构 树(二叉树,Huffman树,二叉检索树等)[层次化关系] 图(有向图,无向图等)[无向,受限少] 数据的存储结构 逻辑结构到物理存储空间的映射。对于数据结构里所定义的每一个节点,申请的内存空间必须是连续存储的区域 除非指针指向别的扩展地址。 计算机主存储器(内存) 非负整数地址编码,相邻单元的集合 基本单位是字节 访问不同地址所需时间基本相同(即随机访问) 数据结构的存储结构组成(四类形式):顺序,链接,索引,散列 抽象数据类型 简称ADT(Abstract Data Type) 定义了一组运算的数学模型 与物理存储结构无关 使软件系统建立在数据之上(面向对象) 抽象数据类型的标准格式 ADT 抽象数据类型名 { Data: 数据元素之间逻辑关系的定义; Operation: 操作1; 操作2; ... } 有人举出了“超级玛丽”例子: “超级玛丽”这个经典的任天堂游戏,里面的游戏主角是马里奥,我们给他定义了基本操作,前进、后退、跳