数据结构-第1章 概述

2023-10-28

第1章  概述
第2章  线性表
第3章  栈和队列
第4章  串、矩阵和广义表
第5章  树和二叉树
第6章  图
第7章  查找
第8章  排序

一.第1章  概述

1.  数据
所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )
2.  数据元素
数据元素是数据的基本单位

3.  数据项
数据项是数据的最小单位。

4.  数据对象
具有相同特征的数据元素的集合称为数据对象。

5.  数据结构
相互之间存在一种或多种特定关系的数据元素的集合。
数据元素之间的相互关系称为结构。


数据元素之间的相互关系称为结构

数据结构包括逻辑结构、物理结构(即存储结构)和对数据的操作三个方面

数据结构的形式化定义:    
        Data_Structure = (D, S)
其中,D是数据元素的有限集合,S是D上关系的有限集合,是数据元素之间的逻辑关系

S=(D, R)
                   D={ a, b, c, d, e, f }
                   R={<a,e>, <b,c>, <c,a>, <e,f>, <f,d>}

四种存储结构分别为:顺序、链式、索引、散列

泛型类是一种所操作的数据的类型尚不明确而临时使用类型参数来表示的自定义数据类型

public class MyList<T>{
    T[] arr; //T表示泛型,实例化时需要使用具体的类型
    int length;
    public MyList(int len)
    {

  arr= (T[]) new Object[len];
       len=0;
    }
    ……
}

实例化:MyList<String> list=new MyList<String>(10);

抽象数据类型(ADT)

定义格式:

    ADT 抽象数据类型名{
            数据对象:<数据对象的定义>  (即:同类型数据元素的集合)
            数据关系:<数据关系的定义>
            基本操作:<基本操作的定义>
        } ADT 抽象数据类型名

基本操作的定义格式:<操作名称> (参数列表);

复数抽象数据类型定义:

ADT Complex{
    数据对象:D={real,imag,其中real为实部,imag为虚部}
    数据关系:R={<real,imag>}
    基本操作:
    Complex(real,imag); //构造实部和虚部分别为real和imag的复数
    add(c);//返回当前复数与复数c的和
    sub(c);//返回当前复数与复数c的差    
}

抽象数据类型描述数据结构的逻辑特性和操作集合,与其存储结构及实现无关。

//1.定义抽象数据类型:定义相应的接口
    public interface 接口名<T>{
        //T是泛型参数,可使类或方法操作多种类型的数据对象
      public abstract 类型 方法名1(); //每个方法对应抽象数据类型的一个操作
      public abstract 类型 方法名2();
            ……
    }

//2、实现抽象数据类型:定义实现接口的类
    public class 类名<T> implements 接口名<T>{
        //定义成员变量    
        //实现接口中的方法
    }

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构-第1章 概述 的相关文章

  • 如何将 d3 (javascript) 添加到 vaadin 应用程序?

    晚上好各位 我目前正在尝试将 d3 的可视化功能添加到我的 vaadin 应用程序中 如果您不知道 d3 是什么 这里有一个快速链接 http d3js org http d3js org 但我遇到了一些问题 如何添加使用 d3 进行开发所
  • Java Set 和 List 接口的组合

    我有一个数据结构 我目前正在使用它ArrayList 我意识到在这个结构中我不希望出现任何重复项 我的第一个想法是使用某种形式的集合 但是顺序也很重要 经过一番谷歌搜索和搜索我发现的集合文档LinkedHashSet这几乎可以完成工作 不幸
  • 何时选择 JMS API 而不是 UDP 套接字 API,反之亦然?

    有哪些原因可以促使程序员在分布式 Java 应用程序中使用 Java JMS Java 消息服务 API 而不是 java net 包的 UDP 套接字 API 或者使用 UDP 套接字 API 而不是 JMS API 如果可能 请给出应用
  • 基本数据类型和类数据类型的 equals() 方法和“==”运算符

    我已经知道了equals 方法 或任何其他与此类似的方法 比较对象和对象之间给定类型的值 运算符比较表达式中声明的两个引用是否相同 但是在比较同一类中两个对象的每个字段时我有一个问题 代码如下 fields are String name
  • 在自定义 CellRenderer 中重写 createToolTip()

    我正在尝试为 JTable 的特定列获取自定义工具提示 我已经创建了一个 CellRenderer 我已经成功更改了其他特定于单元格的属性 private class CustomCellRenderer extends DefaultTa
  • JCombo AutoComplete - 模式或反向查找

    我正在使用swingx 库中的自动完成装饰器 http download java net javadesktop swinglabs releases 0 8 docs api org jdesktop swingx autocomple
  • 组件系列、组件类型和渲染器类型之间有什么关系?

    当我学习 JSF 中的自定义组件开发时 我对组件系列 组件类型和渲染器类型之间的关系感到困惑 例如 我注册了一个渲染器和一个自定义组件 如下所示 faces config xml
  • 重启设备后,频繁发送短信就是开机时多发一次短信

    我经常发送短信 在重新启动设备时再次发送短信 同时我们也 打开 之后 它发送短信的时间间隔是正确的 但是当我们打开设备时 它会再次发送短信 public class BootCompletedIntentReceiver extends B
  • 如何将 Postgres inet 数据类型与 OpenJPA 结合使用?

    我需要使用 OpenJPA 2 2 2 在 Postgres 9 0 表中记录 IP 地址 我已经使用本机查询让它工作 EntityManager entityManager entityManagerFactory createEntit
  • 如何使用 Hibernate for Java 将 CHAR(1) 映射到布尔值?

    如何使用 Hibernate for Java 将 CHAR 1 映射到布尔值 The true false or yes notypes 会为你做这件事
  • 在连续 8 个测量到的 GC 抖动周期后关闭 JVM

    我正在编写 Apache beam BAtch 数据流 其中从 GCS 写入到 BQ 我的数据包含400万条记录 我已指定n1 HighMem 8机器类型 我的数据流以少量数据形式工作 我的用例我的模式不固定 所以我使用了 getFaile
  • 线程运行如何启动?

    我正在寻找一个关于线程的小例子 为了创建线程 我们可以通过两种方式来实现 Runnable接口或通过扩展Thread 我使用第一种方式 package test public class test implements Runnable p
  • Java 中 getter 的命名约定有多重要?

    我非常相信一致性 因此也相信惯例 然而 我目前正在用 Java 开发一个框架 其中这些约定 特别是get set前缀约定 似乎妨碍了可读性 例如 有些课程会有id and name属性和使用o getId 代替o id 由于多种原因 这似乎
  • 如何在 JRuby 中初始化 SQLite3 JDBC 驱动程序?

    如何在不使用活动记录的情况下通过 JDBC 访问 SQLite3 下面是一个使用 JRuby 1 6 6 Ruby 1 8 兼容模式 和 jdbc sqlite3 3 7 2 的示例 require rubygems require jdb
  • 如何重写 Lombok Setter 方法

    我在我的项目和生成中使用 lombokSetters and Getters using Setters and GettersPOJO 类之上的注释 我正在尝试覆盖属性的 setters 方法 但它不起作用 我想检查 JSON 属性是 E
  • 将一串数字转换为数组

    我在创建将数字字符串转换为数组的程序时遇到问题 我知道这里有一个类似的问题 但我所要做的只是一组数字 例如 10 15 16 0 57 438 57 18 这是我到目前为止所拥有的 import java util Scanner publ
  • android下拉刷新列表视图出错

    我正在使用功能下拉来刷新library https github com chrisbanes Android PullToRefresh克里斯班斯的 但是当我尝试在我的 xml 文件中导入这个小部件时 它向我显示以下错误 请帮助我如何解决
  • 在 Maven 存储库中查找 Oracle JDBC 驱动程序

    我想将 oracle jdbc 驱动程序作为依赖项 运行时范围 添加到我的项目中 ojdbc14 在 MVNrepository 站点中 放入 POM 的依赖项是
  • 使用 == 比较 Long 对象类型和原始 int

    我有一个通过调用返回 Long 对象数据类型的方法 resp getResultCode 我想比较一下HttpStatus GONE value 它实际上只返回一个原始 int 值410 Long 会拆箱自身以正确地与 int 原语进行比较
  • Spring Boot数据休息中的日期问题

    当我处理日期时 我遇到了春季数据休息的问题 简而言之 就是推迟一天的日期 例如 如果我有 1111 11 11 它会返回给我 1111 11 10 SO 中有一些相关的帖子 ex1 https stackoverflow com quest

随机推荐

  • Redis(一)常见命令使用

    常见文件名 Redis cli使用命令 1 启动Redis 2 连接Redis 3 停止Redis 4 发送命令 1 redis cli带参数运行 如 2 redis cli不带参数运行 如 5 测试连通性 key操作命令 获取所有键 查询
  • PostgreSQL系列3:PostgreSQL导入导出SQL

    启动数据库 pg ctl D data db pgsql data l data db pgsql logs pgsql log start 关闭数据库 pg ctl D data db pgsql data stop 使用pgsql客户端
  • R语言实战学习--回归

    文章目录 普通最小二乘回归 OLS 简单线性回归 多项式回归 多元线性回归 回归诊断 标准方法 QQ图正态性检验 残差图 误差的独立性 成分残差图 偏残差图 线性 同方差性 线性模型假设综合验证 异常观测值 高杠杆值 强影响点 变量添加图
  • 爬虫基础————ip地址和url详解

    学习慕课网bobby老师的课程从零起步 系统入门Python爬虫工程师时做的笔记 有兴趣的同学可以去慕课网观看视频 1 ip地址 整个网络传输可以比作快递 数据就是快递包裹 会经过一系列中转站 分包捡包等操作 最后才送到客户手中 Ip地址就
  • Python程序:输出杨辉三角的几种办法

    文章目录 一 问题描述 二 问题分析 三 第一种方法 1 具体代码 2 运行结果 3 程序的改进 四 第二种方法 1 具体代码 2 运行结果 五 总结分析 一 问题描述 给定一个非负整数 n 生成 杨辉三角 的前 n行 在 杨辉三角 中 每
  • 【文献调研】多任务学习-Part1

    基于数据增强和多任务学习的突发公共卫生时间谣言识别研究 摘要 Motivation 通过引入多任务学习模型和数据增强方法 解决突发公共卫生事件情景下谣言识别任务数据不平衡且带标签数据量少的问题 Methods 首先提取突发公共卫生事件谣言文
  • 《Learning Spark》第八章:调优及调试spark应用

    2020 07 05 引言 我记得当时我就是因为使用hadoop太过费劲了 才上手的spark 然后因为自己的机器性能不行 又一点一点调优 当时调优的过程 主要是从底层的结构上来进行调优 主要就是那些worker数量以及内存大小等等 但是对
  • PyTorch和TensorFlow生成对抗网络学习MNIST数据集

    介绍 生成对抗网络 简称GAN 是最近开发的最受欢迎的机器学习算法之一 对于人工智能 AI 领域的新手 我们可以简单地将机器学习 ML 描述为AI的子领域 它使用数据来 教 机器 程序如何执行新任务 一个简单的例子就是使用一个人的脸部图像作
  • png四通道透明背景图成功加入到视频帧中 使用了mask原理

    import cv2 import ffmpeg import cv2 import numpy as np import glob video f D CCTV CCTV mp4 视频文件名 output f D CCTV logoaft
  • 共享内存---结构体使用

    共享内存主要是通过映射机制实现的 Windows 下进程的地址空间在逻辑上是相互隔离的 但在物理上却是重叠的 所谓的重叠是指同一块内存区域可能被多个进程同时使用 当调用 CreateFileMapping 创建命名的内存映射文件对象时 Wi
  • 网络基础-应用层:E-mail应用:SMTP协议,POP协议,IMAP协议

    Email应用的构成 邮件客户端 邮件服务器 SMTP协议 只支持文本 邮件服务器 邮箱 存储发给该用户的Email 消息队列 存储等待发送的Email SMTP协议 邮件服务器之间传递消息所使用的协议 客户端 发送消息的服务器 服务器 接
  • js实用方法记录-js动态加载css、js脚本文件

    js实用方法记录 动态加载css js 附送一个加载iframe h5打开app代码 1 动态加载js文件到head标签并执行回调 方法调用 dynamicLoadJs http www yimo link static js main m
  • 双向链表实现简单的增删查改

    前言 上次分享了单向链表的增删查改 这次要介绍双向链表的增删查改 其实双向链表也有多种 这次主要介绍结构最复杂但是实现起功能反而最简单的带头双向循环链表 希望我的分享对各位有些许帮助 学习这篇文章的内容最好有这篇文章的基础 目录 一 双向链
  • VBA常用语法(一)

    VBA语句 一 VBA语句 1 宏程序语句 运行后可 以完成一个功能 给单元格a1赋值 Sub test 开始语句 Range a1 10 程序主体 End Sub 结束语句 2 函数程序语句 运行后可以返回一个值 Function shc
  • 阿里云数据库 MongoDB 版Python 连接示例

    安装pymongo import uuid from pymongo import MongoClient 两地址 CONN ADDR1 demotest 1 mongodb tbc3 newtest rdstest aliyun inc
  • 即将开班「中国图象图形学学会」前沿讲习班第2期——智能驾驶与机器视觉

    CSIG图像图形学科前沿讲习班第2期 主题 智能驾驶与机器视觉 2017年7月15日 17日 清华大学 智能驾驶无疑开启了交通运输行业的新时代 随着传感器和人工智能技术的逐渐成熟 智能驾驶已经从 概念化 进入 落地实用化 的关键窗口期 越来
  • 高精度地图定位在高速公路自动驾驶系统中的应用

    摘要 自动驾驶已经成为全球汽车产业的战略发展方向 其中L3 级高速公路自动驾驶是最有可能率先落地的自动驾驶系统 高精度地图和定位系统是自动驾驶系统的关键一部分 近年来发展迅速 已经达到可量产状态 文章首先分析了自动驾驶和高精度地图定位的发展
  • 运动目标检测代码(帧差、高斯混合、vibe代码实现)

    主要介绍四种运动目标检测的算法代码 每段代码博主实测可运行 当前主流的混合高斯背景模型 VIBE算法代码转载自他处 另外GMG算法 KNN算法在朱伟的书中也有讲 opencv3 0中 有专门的背景模型类BackgroundSubtracto
  • Java学习笔记29——字节流2

    字节流读数据 字节流读数据 一次读一个字节的数据 一次读一个字节数组的数据 字节流复制图片 字节流读数据 一次读一个字节的数据 FileInputStream 从文件系统中的文件获取输入字节 public class FileInputSt
  • 数据结构-第1章 概述

    第1章 概述 第2章 线性表 第3章 栈和队列 第4章 串 矩阵和广义表 第5章 树和二叉树 第6章 图 第7章 查找 第8章 排序 一 第1章 概述 1 数据 所有能被计算机识别 存储和处理的符号的集合 包括数字 字符 声音 图像等信息