《数据结构》(C语言版)第1章 绪论(上)

news2024/11/13 14:51:38

第1章 绪论

  • 1.1 数据结构的研究内容
  • 1.2 基本概念和术语

1.1 数据结构的研究内容

N.沃思(Niklaus Wirth)教授提出:

程序=算法+数据结构

电子计算机的主要用途

早期:主要用于数值计算
后来:非数值计算,复杂的具有一定结构关系的数据

  • 书目自动检索系统(线性表)
  • 人机对奕问题(树)
  • 文件系统的系统结构图(树)
  • 多叉路口交通灯管理问题(图)
  • 六度空间理论(图)

求解非数值计算的问题

设计出合适的数据结构及相应的算法,即:首先要考虑对相关的各种信息如何表示、组织和存储?

数据结构的研究内容为

研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。

数据结构创始人–高德纳(Donald Ervin Knuth)
1938年出生,斯坦福大学计算机系教授–36岁图灵奖
在这里插入图片描述

Bill Gates:“如果你学会了这本书,就直接给微软发个简历!”

李开复建议(专研+潜力+创新)

练内功不要只花功夫学习各种流行的编程语言和工具,以及一些公司招聘广告上要求的科目,学好基础课程:离散数学、数据结构、计算机组成原理、操作系统、计算机网络、编译原理、数据库等,试试Knuth的The Art of Computer Programming的题目
多实战,通过编程的实战,积累经验、内化知识,建议大家争取在大学四年中积累编写十万行代码的经验

数据结构所处的地位
在这里插入图片描述

介于数学、计算机硬件和计算机软件三者之间的一门核心课程

数据结构在计算机学科中的地位
在这里插入图片描述
学习目标

  • 能够分析研究计算机加工的对象的特性,获得其逻辑结构,根据需求,选择合适存贮结构及其相应的算法;
  • 学习一些常用的算法;
  • 复杂程序设计的训练过程,要求编写的程序结构清楚和正确易读;
  • 初步掌握算法的时间分析和空间分析技术。

1.2 基本概念和术语

1.数据(data)
所有能输入到计算机中去的描述客观事物的符号

  • 数值性数据
  • 非数值性数据(多媒体信息处理)

2、数据元素(data element)
数据的基本单位,也称结点(node)或记录(record)

3、数据项(data item)
有独立含义的数据最小单位,也称域(field)

三者之间的关系:数据 > 数据元素 > 数据项
例:学生表 > 个人记录 > 学号、姓名……

4、数据对象(Data Object)
相同特性数据元素的集合,是数据的一个子集

  • 整数数据对象:N = { 0,1, 2, … }
  • 学生数据对象:学生记录的集合

5、数据结构(Data Structure)
是相互之间存在一种或多种特定关系的数据元素的集合

数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。

数据结构的两个层次

逻辑结构:数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。
存储结构(物理结构):数据元素及其关系在计算机存储器中的存储方式。

  • 逻辑结构
    划分方法一

线性结构:有且仅有一个开始和一个终端结点,并且所有结点都最多只有一个直接前趋和一个后继。例如:线性表、栈、队列、串

非线性结构:一个结点可能有多个直接前趋和直 接后继。例如:树、图

划分方法二

集合:数据元素间除“同属于一个集合”外,无其它关系
线性结构:一个对一个,如线性表、栈、队列
树形结构:一个对多个,如树
图形结构:多个对多个,如图

在这里插入图片描述

  • 存储结构

顺序存储结构:借助元素在存储器中的相对位置来表示数据元素间的逻辑关系。 链式存储结构:借助指示元素存储地址的指针表示数据元素间的逻辑关系。

顺序存储
在这里插入图片描述
链式存储
在这里插入图片描述
数据的运算

逻辑结构和存储结构都相同,但运算不同, 则数据结构不同。例如,栈与队列
对于一种数据结构, 常见的运算有:插入、删除、修改、查找、排序

总结
在这里插入图片描述

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

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

相关文章

Gstreamer配合srs服务器实现RTMP直播和WebRtc直播

前言 上一篇文章,实现了配合腾讯云直播的推流,但是需要花钱,于是就在思考能不能搞一个局域网内,免费的RTMP直播呢? 最终发现了可以使用srs服务器。如果成功了,以后也可以使用webrtc的直播推流。 以下是实现效果: 一、搭建srs服务器: 参考:ubuntu环境下搭建SRS服务器(…

windows系统关闭开机自检硬盘

效果: 注册表关闭开机硬盘自检,你可以按照以下步骤操作: 打开注册表编辑器: 按 Win R 键打开“运行”对话框。输入 regedit 并按回车,打开注册表编辑器。 定位到自检相关的键: 依次展开以下路径&#x…

认识经典蓝牙

现在BLE很流行,本人接触BLE也更多,而对经典蓝牙BR/EDR的开发知之甚少,而且网上关于经典蓝牙的资料也很少,所以,想要有更多了解。 参考: https://www.nordicsemi.cn/news/bluetoothle-and-bluetoothclassic/…

mac|运行别人的SpringBoot+Vue项目

一、运行vue 1、查看项目版本,在package.json中查看,在dependencies中的vue就是对应的版本 2、查看本机的vue版本:vue -V 3、删除node_modules 、package-lock.json 4、运行npm install 如果卡住不动,可能是因为网络问题&…

EasyAR_稀疏空间图

EasyAR_稀疏空间图 EasyAR4.6.3 丨 Unity2020.3.15f2 1.创建稀疏空间地图 在EasyAR开发中心后台创建Scene许可证密钥,并且使用稀疏空间地图 2.设置稀疏空间地图库名,对稀疏空间地图进行管理,设置密钥 3.复制密钥到Unity中 添加Spatial Map Ap…

N4 - Pytorch实现中文文本分类

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目录 任务描述步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 任务描述 在上周的任务中,我们使用torchtext下载了托管的英文的…

Web 框架

Web 框架 Web服务器Web服务器的主要功能常见的Web服务器软件包 Web 框架常用 Python Web 框架选择Python Web框架的考虑因素 WSGIWSGI的主要特点WSGI的工作原理常见的WSGI服务器和框架: 静态资源定义与特点静态资源的类型静态资源的管理与优化 动态资源定义与特点动…

Java入门、进阶、强化、扩展、知识体系完善等知识点学习、性能优化、源码分析专栏分享

场景 作为一名Java开发者,势必经历过从入门到自学、从基础到进阶、从学习到强化的过程。 当经历过几年企业级开发的磨炼,再回头看之前的开发过程、成长阶段发现确实是走了好多的弯路。 作为一名终身学习的信奉者,秉承Java体系需持续学习、…

Java | Leetcode Java题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; class Solution {public String removeDuplicateLetters(String s) {boolean[] vis new boolean[26];int[] num new int[26];for (int i 0; i < s.length(); i) {num[s.charAt(i) - a];}StringBuffer sb new StringBuffer();for (in…

arduino程序-MC猜数字2、3、4(基础知识)

arduino程序-MC猜数字2、3、4&#xff08;基础知识&#xff09; 1-20 MC猜数字2-LED数码管数码管LED数码管应用程序示例 1-21 MC猜数字3- while回顾While循环语句Do while循环语句 1-22 MC猜数字4-switch caseIf判断myNumber数字显示If ... else ifSwitch case示例程序产生随机…

域环境的搭建 内网学习不会搭建环境???

今天有空写一下内网环境的搭建的步骤&#xff0c;我下面是我搭建的环境的图。 我搭建的是父子域&#xff0c;DC是父域控&#xff0c;WEB为子域控 然后下面我来说一下我是怎么搭建的。 首先我们要准备一些机器的镜像文件&#xff0c;如果你是复制的虚拟机的话&#xff0c;你要把…

CLIP论文详解

文章目录 前言一、CLIP理论1.CLIP思想2.模型结构 二、CLIP预训练1.数据集2.训练策略3.模型选择 三、Zero-Shot推理四、CLIP伪代码实现五、CLIP局限性总结 前言 CLIP这篇论文是OpenAI团队在2021年2月底提出的一篇论文&#xff0c;名字叫做《Learning Transferable Visual Models…

Markdown与数学公式

在写偏理科的文章的时候&#xff0c;多多少少会涉及到一些公式、函数的输入&#xff0c;本篇就来讲讲如何在 Markdown 中书写数学公式。 在此之前&#xff0c;我们先介绍下 LaTex 和 MashJax&#xff0c;Markdown 就是基于它们来实现数学公式的输入。 LaTex 简介 LaTex &…

JDK-java.nio包详解

JDK-java.nio包详解 概述 一直以来Java三件套&#xff08;集合、io、多线程&#xff09;都是最热门的Java基础技术点&#xff0c;我们要深入掌握好这三件套才能在日常开发中得心应手&#xff0c;之前有编写集合相关的文章&#xff0c;这里出一篇文章来梳理一下io相关的知识点。…

MyBatis 源码学习 | Day 1 | 了解 MyBatis

什么是 MyBatis 在对一项技术进行深入学习前&#xff0c;我们应该先对它有个初步的认识。MyBatis 是一个 Java 持久层框架&#xff0c;用于简化数据库的操作。它通过 XML 或注解的方式配置和映射原始类型、接口和 Java POJO&#xff08;Plain Old Java Objects&#xff0c;普通…

跑深度学习模型I:一文正确使用CUDA

1. 安装显卡驱动NVIDIA 如果出现这个问题&#xff0c;是NVIDIA环境配置原因。一定要注意配置系统环境变量正确。 C:\Users\2605304845>nvcc --version nvcc 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 - CSDN文库 2. 安装CUDA 安装时注意版本对应…

C语言--函数

1. 函数定义 语法&#xff1a; 类型标识符 函数名&#xff08;形式参数&#xff09; {函数体代码 } &#xff08;1&#xff09;类型标识符 --- 数据类型&#xff08;函数要带出的结果的类型&#xff09; 注&#xff1a;数组类型不能做函数返回结果的类型&#xff0c;如果函…

pt模型转onnx模型,onnx模型转engine模型,pt模型转engine模型详细教程(TensorRT,jetpack)

背景 背景是需要在nvidia jetpack4.5.1的arm64设备上跑yolov8,用TensorRT加速&#xff0c;需要用*.engine格式的模型&#xff0c;但是手头上的是pt格式模型&#xff0c;众所周知小板子的内存都很小&#xff0c;连安装ultralytics依赖库的容量都没有&#xff0c;所以我想到在wi…

【开源】嵌入式Linux(IMX6U)应用层综合项目(1)--云平台调试APP

目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1连接阿里云 2.2云平台调试UI 2.3Ui_main.c界面切换处理文件 2.4.main函数 3.结尾&#xff08;附网盘链接&#xff09; 1.简介 此文章并不是教程&#xff0c;只能当作笔者的学习分享&…

go中的值传递和指针传递

文章目录 1、& 和 *2、空指针3、nil4、用值传递还是指针传递&#xff1f;5、补充 1、& 和 * &后跟一个变量名&#xff0c;得到的是这个变量的内存地址*int类型的变量&#xff0c;代表这个变量里存的值是int类型的变量的内存地址数据类型的指针类型&#xff0c;即在…