【第1章 数据结构概述】

目录

一. 基本概念

1. 数据、数据元素、数据对象

2. 数据结构

二. 数据结构的分类

1. 数据的逻辑结构可分为两大类:a. 线性结构;b. 非线性结构

2. 数据的存储结构取决于四种基本的存储方法:顺序存储、链接存储、索引存储、散列存储

3. 数据的运算

三. 数据类型

1. 基本类型、组合类型

2. 抽象数据类型

四. 算法和算法分析

1. 算法概念

2. 算法分析


一. 基本概念

1. 数据、数据元素、数据对象

数据:客观事物的符号表示,对现实世界的事物采用计算机能够识别、存储和处理的形式进行描述的符号的集合。

数据元素:数据的基本单位,可以由若干数据项组成。其中数据项包括:初等项(数据不可分割的最小单位;组合项:由若干数据项组成)

数据对象:性质相同的数据元素的集合

例如:

 每一行是一个学生的相关信息,即学生个体,则是一个数据元素;

学号、姓名、性别等信息,为数据项,其中成绩为组合项,学号为初等项;

学生情况表则是一个数据对象。

2. 数据结构

一般认为包括以下三个方面:

(1)逻辑结构:数据元素与数据元素之间的逻辑关系;

(2)存储结构(物理结构):数据元素与数据元素之间的关系在计算机中的存储表示;

(3)数据的运算:对数据的操作。

二. 数据结构的分类

1. 数据的逻辑结构可分为两大类:a. 线性结构;b. 非线性结构

(1)线性结构

有且仅有一个开始节点和终端节点,并且所有节点最多只有一个前驱和一个后继。

例如:线性表就是典型的线性结构。

(2)非线性结构

一个节点可能有多个前驱和后继。

树:一个节点最多只有一个前驱,而可以有多个后继

图:对节点的前驱和后继的个数不作限制-------------最一般的非线性结构

2. 数据的存储结构取决于四种基本的存储方法:顺序存储、链接存储、索引存储、散列存储

(1)顺序存储:把逻辑上相邻的节点存储在物理位置相邻的存储单元里,节点之间的逻辑关系用存储单元的邻接关系来体现。

注意:

  • 顺序存储主要用于线性结构,但是非线性结构也可以通过线性化的方法实现顺序存储
  • 通常顺序存储用程序语言的数组描述

(2)链接存储:对逻辑上相邻的节点不要求在存储的物理位置上也相邻,节点之间的逻辑关系由附加的指针表示。

注意:

  • 链接存储常用于非线性结构,但线性结构也可以链接存储
  • 通常链接存储用程序语言的指针描述

(3)索引存储:在存储节点数据的同时,还建立附加的索引表。索引表的每一项称为索引项。一般索引项由关键字(唯一标识该节点的数据项)和地址(节点的存储地址)组成。

(4)散列存储:根据节点的关键字计算出该节点的存储地址,然后按存储地址存放该关键字对应的数据元素。

 注意:

  • 同一种逻辑结构采用不同的存储方法,可得到不同的存储结构
  • 通常将同一逻辑结构的不同存储结构用不同的名称标识,如:
  1. 线性表的顺序存储称为顺序表;
  2. 线性表的链接存储称为链表;
  3. 线性表的散列存储称为散列表。

3. 数据的运算

同一种逻辑结构,采用同一种存储方式,如果定义的运算不同,也用不同的名称标识。如:

  • 栈:线性表插入、删除操作限制在表的一端;
  1. 若该线性表为顺序存储,则称为顺序栈;
  2. 若该线性表链式存储,则称为链式栈。
  • 队列:线性表的插入限制在表的一端,删除限制在表的另一端
  1. 若该线性表为顺序存储,则称为顺序队列;
  2. 若该线性表为链式存储,则称为链式队列。

综述:数据的逻辑结构 + 数据的存储结构 + 数据的运算 = 数据结构

三. 数据类型

1. 基本类型、组合类型

高级程序语言中,数据类型分为两种:

(1)基本数据类型:其取值范围,允许的操作,由系统预先规定;

(2)组合类型:由基本类型组合构造.

2. 抽象数据类型

Abstract Data Type,ADT,指抽象数据的组织和与之相关的操作,即将数据和操作封装在一起,使得用于程序只能通过在ATD里定义的某些操作来访问其中的数据,从而实现信息隐蔽。

四. 算法和算法分析

1. 算法概念

定义:一个有穷的指令集,这些指令为解决某一特定任务规定了一个运算系列。

算法的五大特性:

(1)输入:一个算法必须有一个或多个输入(通过输入,使得任务开始,从而算法启动有了意义),这里不同于程序的特性;

(2)输出:一个算法应该有一个或多个输出;

(3)确定性:无歧义,每一种情况,需执行的动作要严格、清晰规定;

(4)有穷性:有限个步骤结束;

(5)可行性:可通过基本操作执行完成。

2. 算法分析

一个好的算法应满足下述要求:

(1)正确性;

(2)可读性;

(3)健壮性:输入非法数据,能做出反应或处理,输出错误信息并终止执行;

(4)时间效率和存储占用量:时间开销往往和空间开销相互制约,需折中处理。

撇开与计算机软硬件相关的因素,可以认为一个特定算法“运行工作量”的大小只依赖于问题的规模,或者问题规模的函数。一般将求解问题的输入量作为问题的规模,用n表示。

时间复杂度T(n) = f(n),其中f(n)是算法所求解问题规模n的函数,当n趋于无穷大时,时间复杂度T(n)的数量级(阶)称为算法的渐进时间复杂度。即T(n) = O(f(n)).

有时,算法的时间复杂度不仅仅依赖于问题的规模,还与输入实例的初始化状态有关。

常见的时间复杂度,按数量级递增排列,有O(1) <<O(log2n)<<O(n)<<O(nlog2n)<<O(n^2)<<O(n^3)...<<O(n^k)<<O(2^n)

空间复杂度指所需存储空间的耗费,记为S(n) = O(f(n)),其中n为问题规模,f(n)为算法所处理的数据所需的存储空间与算法操作所需辅助空间之和。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/59056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux)

GPIO口的操作&#xff0c;是很常见的功能。传统的GPIO sysfs接口已被弃用。自Linux 4.8起&#xff0c;内核提供了全新的操作gpio的方式libgpiod&#xff08;C library and tools for interacting with the linux GPIO character device&#xff09;&#xff0c;当然也更高效&am…

大数据Flink简介与架构剖析并搭建基础运行环境

文章目录 前言Flink 简介Flink 集群剖析Flink应用场景Flink基础运行环境搭建Docker安装docker-compose文件编写创建并运行容器访问Flink web界面 前言 前面我们分别介绍了大数据计算框架Hadoop与Spark,虽然他们有的有着良好的分布式文件系统和分布式计算引擎&#xff0c;有的有…

电脑识别不了固态硬盘怎么办?

在使用固态硬盘时&#xff0c;可能会出现电脑无法识别的情况&#xff0c;这时我们就无法使用固态硬盘中的数据。那么&#xff0c;电脑识别不了固态硬盘怎么办&#xff1f; 为什么电脑识别不了固态硬盘&#xff1f; 一般来说&#xff0c;电脑识别不了固态硬盘是因为以下3个原因…

软件工程(八) UML之类图与对象图

1、类图与对象图 1.1、类图与对象图的概念 类图(class diagram)描述一组类、接口、协作和它们之间的关系 对象图(object diagram)描述一组对象及它们之间的关系、对象图描述了在类图中所建立的事物实例的静态快照。 1.2、类图与对象图的区别 类图和对象图基本上是一样…

Python Opencv实践 - Canny边缘检测

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_GRAYSCALE) print(img.shape)#图像Canny边缘检测 #cv.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradien…

python web 开发与 Node.js + Express 创建web服务器入门

目录 1. Node.js Express 框架简介 2 Node.js Express 和 Python 创建web服务器的对比 3 使用 Node.js Express 创建web服务器示例 3.1 Node.js Express 下载安装 3.2 使用Node.js Express 创建 web服务器流程 1. Node.js Express 框架简介 Node.js Express 是一种…

Spring boot中调用C/C++(dll)

添加JNA依赖 <dependency><groupId>net.java.dev.jna</groupId><artifactId>jna</artifactId><version>5.5.0</version> </dependency>准备C代码/C代码 如下是C代码&#xff0c;文件名&#xff1a;xizi.c #include <std…

电子电路原理题目整理(1)

电子电路原理题目整理&#xff08;1&#xff09; 最近在学习《电子电路原理》&#xff0c;记录一下书后面试题目&#xff0c;答案为个人总结&#xff0c;欢迎讨论。 1.电压源和电流源的区别&#xff1f; 电压源在不同的负载电阻下可提供恒定的负载电压&#xff0c;而电流源对于…

Docker容器与虚拟化技术:Harbor私有仓库部署与迁移

目录 一、理论 1.本地私有仓库 2.Harbor 二、实验 1.Docker搭建本地私有仓库 2.docker-compose部署及配置 3.harbor部署及配置 4.登录创建项目 5.在其他客户端上传镜像 6. harbor维护 7.移除 Harbor 服务容器同时保留镜像数据/数据库&#xff0c;并进行迁移 三、问题…

ssm+vue校园教务系统源码和论文

ssmvue校园教务系统源码和论文086 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 1、课题背景 信息系统的目的是让人可以高效的进行工作&#xff0c;包括对信息的一-系列操作&#xff0c;如添加信息、修改信…

论文阅读_扩散模型_SDXL

英文名称: SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis 中文名称: SDXL&#xff1a;改进潜在扩散模型的高分辨率图像合成 论文地址: http://arxiv.org/abs/2307.01952 代码: https://github.com/Stability-AI/generative-models 时间: 2023-…

【MySQL】4、MySQL备份与恢复

备份的主要目的是灾难恢复&#xff0c;备份还可以测试应用、回滚数据修改、查询历史数据、审计等 MySQL日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data #配置文件 vim /etc/my.cnf 日志的分类 常见日志有&#xff1a; 错误日志&#xff0c;一般查询日志&…

Linux常用命令——dd命令

在线Linux命令查询工具 dd 复制文件并对原文件的内容进行转换和格式化处理 补充说明 dd命令用于复制文件并对原文件的内容进行转换和格式化处理。dd命令功能很强大的&#xff0c;对于一些比较底层的问题&#xff0c;使用dd命令往往可以得到出人意料的效果。用的比较多的还是…

【c语言】输出n行按如下规律排列的数

题述&#xff1a;输出n行按如下规律排列的数 输入&#xff1a; 4(应该指的是n) 输出: 思路&#xff1a; 利用下标的规律求解&#xff0c;考察数组下标的灵活应用&#xff0c;我们可以看出数从1开始是斜着往下放的&#xff0c;那么我们如何利用两层for循环求解这道题&#xff…

Docker基础入门:容器数据卷与Dockerfile构建镜像(发布)

Docker基础入门&#xff1a;容器数据卷与Dockerfile构建镜像&#xff08;发布&#xff09; 一、docker容器数据卷1.1、使用docker容器数据卷1.2、具名挂载、匿名挂载1.3、如何确定是具名挂载还是匿名挂载 二、使用dockerfile2.1 初识Dockerfile2.2 Dockerfile构建过程2.3 Docke…

JVM运行时参数查看

常用命令查找文档站点&#xff1a;https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值&#xff0c;默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案

执行SQL文件出现【Unknown collation “utf8mb4_0900_ai_ci”】的解决方案 一、背景描述二、报错原因三、解决方案 一、背景描述 从服务器MySQL中导出数据为SQL执行脚本后&#xff0c;在本地执行导出的SQL脚本。 报错&#xff1a;Unknown collation “utf8mb4_0900_ai_ci” …

IP 地址追踪工具

IP 地址跟踪工具是一种网络实用程序&#xff0c;允许您扫描、跟踪和获取详细信息&#xff0c;例如 IP 地址的 MAC 和接口 ID。IP 跟踪解决方案通过使用不同的网络扫描协议来检查网络地址空间来收集这些详细信息。一些高级 IP 地址跟踪器软件&#xff08;如 OpUtils&#xff09;…

RNN循环神经网络

目录 一、卷积核与循环核 二、循环核 1.循环核引入 2.循环核&#xff1a;循环核按时间步展开。 3.循环计算层&#xff1a;向输出方向生长。 4.TF描述循环计算层 三、TF描述循环计算 四、RNN使用案例 1.数据集准备 2.Sequential中RNN 3.存储模型&#xff0c;acc和lose…

复杂性管理与重复性管理

在前面我们说到了所谓的"计算机科学", 重点在于如何控制大型系统的复杂性. 复杂性本身当然也是个很大的话题, 而一种常见的复杂性的来源则是重复性, 即是由不断的重复所带来的复杂性. 重复性带来的复杂性常被人忽视, 大概是因为一开始它是不起眼的, 而当人们意识到它…