数据结构学习笔记(一)——《大话数据结构》

第一章 数据结构绪论

基本概念和术语

数据

描述客观事物的符号,计算机中可以操作的对象,能被计算机识别并输入给计算机处理的符号的集合。包括整型、实型等数值类型和字符、声音、图像、视频等非数值类型。

数据元素

组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。

  • 例如:禽类的数据元素为鸡、鸭、鹅等。

数据项

一个数据元素可以由若干个数据项组成,数据项是数据不可分割的最小单位。

  • 例如:对于人这个数据元素,可以有眼、耳、嘴、鼻等数据项,也可以有姓名、年龄、性别等数据项,具体选取哪些数据项视所构建的系统决定。

数据对象

是性质相同的数据元素的集合,是数据的子集。其中“性质相同”指数据元素具有相同数量和类型的数据项。通常将数据对象简称为数据。

数据结构

是相互之间存在一种或多种特定关系的数据元素的集合。计算机中的数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合。

逻辑结构与物理结构

逻辑结构

是指数据对象中数据元素之间的相互关系。

用示意图表示数据的逻辑结构时:

  • 将每一个数据元素看作一个节点,用圆圈表示;
  • 元素之间的逻辑关系用节点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。
集合结构

集合结构中的数据元素除了同属于一个集合外,互相之间没有其他关系。

1340553-20180306105425835-1995423397.png

线性结构

线性结构中数据元素之间是一对一的关系。

1340553-20180306105433771-1117138910.png

树形结构

树形结构中数据元素之间存在一种一对多的层次关系。

1340553-20180306105440270-294438694.png

图形结构

图形结构的数据元素是多对多的关系

1340553-20180306105450481-1914075632.png

物理结构(存储结构)

物理结构是指数据的逻辑结构在计算机中的存储形式。数据的存储结构应正确反映数据元素之间的逻辑关系,如何存储数据元素之间的逻辑关系是实现物理结构的重点和难点。

顺序存储结构

把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的。如数组。

1340553-20180306105459459-580711487.png

数据结构中经常会需要添加新的数据元素、去掉旧的数据元素,面对这种时刻变化的情况,顺序结构不够科学。

链式存储结构

链式存储结构把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。数据元素的存储关系并不能反应其逻辑关系,需要用一个指针存放数据元素的地址,这样通过地址就可以找到相关联的数据元素的位置。

1340553-20180306105506468-2065415955.png

逻辑结构是面向问题的,物理结构则是面向计算机的,其基本目标就是将数据及其逻辑关系存储到计算机的内存中。

抽象数据类型

数据类型

数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。例如在高级语言中,每个变量、常量和表达式都有各自的取值范围,类型就用来说明变量或表达式的取值范围和所能进行的操作。

在C语言中,按照取值的不同,数据类型可以分成两类:

  • 原子类型:是不可以再分解的基本类型,包括整型、实型、字符型等;
  • 结构类型:由若干个类型组合而成,是可以再分解的。例如。整型数组是由若干整型数据组成的。

抽象数据类型

对已有数据类型进行抽样,就得到了抽象数据类型。

抽象数据类型(Abstract Data Type, ADT)是指一个数学模型及定义在该模型上的一组操作。抽象数据类型的定义仅取决于它的一组逻辑特性,与其在计算机内部如何表示和实现无关。

例如各种计算机,无论是超算、PC、平板、智能手机等,都拥有“整数”类型,也需要整数间的运算,那么整型就是一个抽象数据类型,尽管它在上面提到的各种计算机中的实现方法可能不一样,但由于其定义的数学特征相同,在编程者看来,它们就是相同的。因此,抽象的意义在于数据类型的数学抽象特性。

抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来。

这里给出描述抽象数据类型的标准格式:

ADT 抽象数据类型名
Data数据元素之间逻辑关系的定义
Operation   操作1初始条件操作结果描述操作2......操作n......
endADT

总结回顾

数据结构相关概念

1340553-20180306105533236-133588807.png

数据结构定义

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

数据结构分类

1340553-20180306105548201-1645134107.png

抽象数据类型及其描述方法

ADT 抽象数据类型名
Data数据元素之间逻辑关系的定义
Operation   操作1初始条件操作结果描述操作2......操作n......
endADT

转载于:https://www.cnblogs.com/communedefence/p/8513152.html

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

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

相关文章

6. Z 字形变换

6. Z 字形变换 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下: P A H N A P L S I I G Y I R之后,你的输出需要从…

java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)

2019独角兽企业重金招聘Python工程师标准>>> java的垃圾回收机制是java语言的一大特色,解放了开发人员对内存的复杂控制,但如果你想要一个高级java开发人员,还是需要知道其机制,所谓不仅要会用还要知道其原理这样才能用…

北京dns服务器ip地址_什么是DNS? 域名系统,DNS服务器和IP地址概念介绍

北京dns服务器ip地址介绍 (Introduction) By the end of this article, you should have a better understanding of:在本文末尾,您应该对以下内容有更好的了解: What DNS is and what it does 什么是DNS及其作用 What DNS servers do DNS服务器做什么 …

767. 重构字符串

767. 重构字符串 给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。 若可行,输出任意可行的结果。若不可行,返回空字符串。 示例 1: 输入: S “aab” 输出: “aba” 示例 2: 输入: S “aaab” 输出: “…

长生生物狂犬病疫苗造假

这两天暴发的长生生物狂犬病疫苗造假案真是很厉害,世人都说投资不过山海关还真有一定道理。 市场上长生生物的狂犬病疫苗约占1/4左右,是一个非常大的用量。 你别说,疫苗真的是非常适合造假: 1. 狂犬病有一定潜伏期,几天…

小程序 杂记

调试打印测试的方法: 方法1、显示提示框 (微信自带的API) wx.showToast({title: 成功,icon: success,duration: 2000 }) 方法2、js的console.log()方法 //test.js Page({onLoad: function(option){console.log(option.query)} }) wx.showToa…

使用fetch封装ajax_如何使用Fetch在JavaScript中进行AJAX调用

使用fetch封装ajaxI will be sharing bite sized learnings about JavaScript regularly in this series. Well cover JS fundamentals, browsers, DOM, system design, domain architecture and frameworks. 在本系列中,我将定期分享有关JavaScript的小知识。 我们…

RxJS笔记

RxJS 《深入浅出RxJS》读书笔记遗留问题 Observable的HOT与COLD对应的实际场景,以及在编码中的体现chapter1 html部分 测试你对时间的感觉按住我一秒钟然后松手你的时间:毫秒jquery实现 var time new Date().getTime(); $("#hold-me").moused…

滚动一定的高度底色递增

$(window).scroll(function() {var swipeHeight 200;//完全变色高度var scrollTop $(document).scrollTop();//页面滚动高度var x scrollTop/swipeHeight;$(".head-bg").css({"opacity":x}); }) 转载于:https://www.cnblogs.com/lhj-blog/p/8521525.htm…

@hot热加载修饰器导致static静态属性丢失(已解决)

react开发的时候,引入热加载,用了修饰器的引入方式,发现了一个很有意思的问题,网上并没有相关文章,所以抛出来探讨下。 一段很简单的测试代码。但是经过babel编码后,变得很有意思。假设编码成es2016&#x…

49. 字母异位词分组

49. 字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。 示例 1: 输入: strs [“eat”, “tea”, “tan”…

python 入门程序_非Python程序员的Python速成课程-如何快速入门

python 入门程序This article is for people who already have experience in programming and want to learn Python quickly.本文适用于已经有编程经验并希望快速学习Python的人们。 I created this resource out of frustration when I couldnt find an online course or a…

cmd命令操作Oracle数据库

//注意cmd命令执行的密码字符不能过于复杂 不能带有特殊符号 以免执行不通过 譬如有!#¥%……&*之类的 所以在Oracle数据库设置密码是不要太复杂 /String Database "ORCL"; 不指向地址程序只能安装在数据库服务器上才能执行到命令String …

OpenCV学习(7.16)

写了个实现摄像头上画线并输出角度的东西……虽然很简单,但脑残的我还是debug了很长时间。 1 // 圆和直线.cpp : 定义控制台应用程序的入口点。2 //3 4 #include "stdafx.h"5 6 using namespace std;7 using namespace cv;8 9 void onMouse(int event, in…

学习vue.js的自我梳理笔记

基本语法格式&#xff1a; <script> new Vue({ el: #app, data: { url: http://www.runoob.com } }) </script> 指令 【指令是带有 v- 前缀的特殊属性。】 判断 <p v-if"seen">现在你看到我了</p> 参数 <a v-bind:href"url"&…

722. 删除注释

722. 删除注释 给一个 C 程序&#xff0c;删除程序中的注释。这个程序source是一个数组&#xff0c;其中source[i]表示第i行源码。 这表示每行源码由\n分隔。 在 C 中有两种注释风格&#xff0c;行内注释和块注释。 字符串// 表示行注释&#xff0c;表示//和其右侧的其余字符…

如何创建一个自记录的Makefile

My new favorite way to completely underuse a Makefile? Creating personalized, per-project repository workflow command aliases that you can check in.我最喜欢的完全没用Makefile的方法&#xff1f; 创建个性化的按项目存储库工作流命令别名&#xff0c;您可以检入。…

【BZOJ3262】陌上花开

CDQ分治模板 注意三元组完全相等的情况 1 #include<bits/stdc.h>2 using namespace std;3 const int N100010,K200010;4 int n,k,cnt[N],ans[N];5 struct Node{6 int a,b,c,id;7 bool operator<(const Node& k)const{8 if(bk.b&&ck.c) re…

Spring+jpaNo transactional EntityManager available

2019独角兽企业重金招聘Python工程师标准>>> TransactionRequiredException: No transactional EntityManager availableEntityManager执行以下方法(refresh, persist, flush, joinTransaction, remove, merge) 都需要需要事务if (transactionRequiringMethods.cont…

python项目构建_通过构建4个项目来学习Python网络

python项目构建The Python programming language is very capable when it comes to networking. Weve released a crash course on the freeCodeCamp.org YouTube channel that will help you learn the basics of networking in Python.当涉及到网络时&#xff0c;Python编程…