1-数据结构

此类题目最好的解决方法就是使用例子

  1. 首先由题目知道,这是一个循环队列,循环队列中只有mod才能进行有效的数据存储,所以A D被排除
  2. 由左图知道m是最后一个元素    所以  m = 8
  3. rear表示队尾的实际位置,7的实际位置时8,因为7是队列的第八个数据,则得出rear = 8
  4. length = 8
  5. C B 公式可得  C = 1  B = 0
  6. 此题目问的是队首元素的实际位置,我们这个队列队首是0,她的实际位置时
  7. 所以此题选择C

节点的度:就是一个节点下分的子节点的个数

1号节点的度为3

8号节点的度为2

树的度:就是该树中最大的节点度

树的遍历(这个我明白)

1. 前序遍历

2. 中序遍历

3. 后序遍历

4. 层次遍历

题目:

关于二叉树的常用公式

n 0= n2+1

也就是说,叶子节点数总是比度为2的节点多一个

解题思路:

n (全部节点个数)= n2+n1+n0

767=n2+n1+n0;  带入上边的公式

(768-n1)/2=n0

我们由完全二叉树知道,其实,完全二叉树中度为1的节点,只要两种可能 0个或1个

当n1=1时,n0为小数,不科学,所以n1=0     n0 = 384

树及其二叉树

概念:

树的路径长度:将树中所有的路径相加

例:上图中树的路径长度为6

权:就是给一个节点的特殊概念,就是计算机在这个程序中需要访问的次数

例:上图中编号为2的节点,权就是2 也就是计算机在这个程序中访问他两次

带权路径长度:就是到达这个节点的路径*权值

例:上图中编号为2 的节点,带权路径长度为3*2 = 6,

树 的带权路径长度:把所有的节点的带权路径长度相加

最优二叉树(哈夫曼树)

就是树的带权路径长度最小的树

注意:在此树中,树的带权路径是由所有圆圈节点的带权路径相加的,并不包括方框的节点

那是因为,圆圈才是我们的数据,而方框只是用来进行构建树而出现的,

叶子节点就是没有子树的节点,由下图可以得出,为5

查找二叉树,二叉排序树

通俗来讲:就是所有节点由左向右依次权值增加

定义:左树为非空时,左树一定比根节点小

右树为非空时,右树一定比根节点大

图的构成:

G=(V,E)

V:是有限的非空定点集合

E:是边与边之间的集合

图分为有向图和无向图

表示方式:

有向图:<A,B>

无向图:(A,B)

顶点的度:无向图:与顶点与之关联的边

有向图:入度和出度

子图:边和节点都在另一个图中存在。

完全图:在无向图中,若每对顶点之间都有一条边相连成为完全图

有向图:每对顶点之间都有两条有向边相连

路径和回路:

路径:从一个节点到另一个节点所走的边的个数

回路:从一个节点出发,最终回到这个节点

简单回路:除了开始节点和结束节点是相同 的,中间没有相同的节点

连通图和连通分量:

连通图:图中任意两个节点都可以到达,就是连通图

连通分量:就是一个总图中,有一小部分是连通的,则他就是总图的连通分量

网络:

每一个图的节点都有一个权值

图的遍历

图的最小生成树

普利姆算法:从点着手

克鲁斯卡尔:从边着手

AOV网络:

用有向边表示活动之间开始的先后关系

这种有向图称为AOV网络

拓朴排序:

  1. 找入度为0的节点
  2. 将零的出度全部删去
  3. 再持续以上两步,知道该图全部完成

上图的拓扑排序有

关键路径(重点难点)

注意:其实就是最长路径

AOE网络

把AOV网上,每一个边,加上一个权值就成为了AOE

关键路径的几个重要概念:

顶点n的最早发生时间:就是从原点到顶点的最长路径长度,记做Ve(n)

例如:Vk的最早发生时间是7

原因是,Vk若想启动,需要a4,a5,a6,全部完成,虽然a6+a3=3哥个时间

但是,如果a5,和a4没有完成,则Vk也是没法启动的

活动a的最早开始时间:活动a就是边,是从起点到他上一个顶点的完成时间  记做:e(a)

例如:a5的最早开始时间是第六时刻,a6的最早开始时间是2

顶点n的最迟发生时间:在不影响工程的情况下Vk    记做:VI(n)

例如:V3的最迟发生时间是第六时间,因为a6只有1个时间,而且全部工程的最早完成时间是7

即便v3在第六时间完成,他也是可以在vk的最早发生时间完成

活动a的最迟开始时间:记做I(n)

上图中:Ve(7)=10;

时间: 2024-08-04 21:51:04

1-数据结构的相关文章

【数据结构】之散列链表(Java语言描述)

散列链表,在JDK中的API实现是 HashMap 类. 为什么HashMap被称为"散列链表"?这与HashMap的内部存储结构有关.下面将根据源码进行分析. 首先要说的是,HashMap中维护着的是一个数组: transient Node<K,V>[] table; ,数组中的每个元素都是一个 Node 对象.这里的Node是HashMap的一个内部类,代码如下: static class Node<K,V> implements Map.Entry<

旧题新做:从idy的视角看数据结构

“今天你不写总结……!!!” 额…… 还是讲我的吧.这些考试都是idy出的题. 20170121:DFS序. ST表.线段树练习 这是第一次考数据结构. Problem 1. setsum 1 second 给你一个长度为N 的整数序列,支持两种操作: • modity l r val 将区间[l,r] 中的所有数修改为val • query l r 询问区间[l,r] 所有数的和 分析:最简单的线段树,区间更改区间求和.但注意是更改,不是添改,sum与flag需同时覆盖. Problem 2.

数据结构Set和Map

一.数据结构 Set 集合的基本概念:集合是由一组无序且唯一(即不能重复)的项组成的.这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中.  特点:key 和 value 相同,没有重复的 value.ES6 提供了数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. 1. 如何创建一个 Set const s = new Set([1, 2, 3]); 2.属性 console.log(s.size); // 3 3.Set 类的方法 --set.add(v

数据结构基本概念

什么是数据结构 "数据结构是数据对象,以及存在于该对象的实例和组成实例的数据元素之间的各种联系.这些联系可以通过定义相关的函数来给出"--Sartaj Sahni,<数据结构.算法与应用> "数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现."--Clifford A.Shaffer,<数据结构与算法分析> "数据结构(data structture)是计算机中存储.组织数据的方式.通常情况下,经i想你

分布式缓存技术redis学习系列(二)——详细讲解redis数据结构(内存模型)以及常用命令

Redis数据类型 与Memcached仅支持简单的key-value结构的数据记录不同,Redis支持的数据类型要丰富得多,常用的数据类型主要有五种:String.List.Hash.Set和Sorted Set. Redis数据类型内存结构分析 Redis内部使用一个redisObject对象来表示所有的key和value.redisObject主要的信息包括数据类型(type).编码方式(encoding).数据指针(ptr).虚拟内存(vm)等.type代表一个value对象具体是何种数

【Python&amp;数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

深入浅出分析MySQL索引设计背后的数据结构

在我们公司的DB规范中,明确规定: 1.建表语句必须明确指定主键 2.无特殊情况,主键必须单调递增 对于这项规定,很多研发小伙伴不理解.本文就来深入简出地分析MySQL索引设计背后的数据结构和算法,从而可以帮你释疑如下问题: 1.为什么innodb表需要主键? 2.为什么建议innodb表主键是单调递增? 3.为什么不建议innodb表主键设置过长? B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.B通常

数据类型和常用数据结构

1.数据类型 几乎是所有的程序设计语言都会讲到数据类型的概念.简单的说,数据类型就是一个值的集合及在这些值上定义的一系列操作的总称.例如:对于C语言的整数类型,其有一定的取值范围,对于整数类型还定义了加法.减法.乘法.除法和取模运算等操作. 按照数据类型的值是否可以分解,数据类型可以分为基本数据类型和聚合数据类型. *基本数据类型:其值不能进一步分解,一般是程序设计语言自身定义的一些数据类型,例如C语言中.字符型.浮点型等. *聚合数据类型:其值可以进一步分解为若干分量,一般是用户自定义的数据类

第3章 文件I/O(3)_内核数据结构、原子操作

3. 文件I/O的内核数据结构 (1) 内核数据结构表 数据结构 主要成员 文件描述符表 ①文件描述符标志 ②文件表项指针 文件表项 ①文件状态标志(读.写.追加.同步和非阻塞等状态标志) ②当前文件偏移量 ③i节点表项指针 ④引用计数器 i节点 ①文件类型和对该文件的操作函数指针 ②当前文件长度 ③文件所有者 ④文件所在设备.文件访问权限 ⑤指向文件数据在磁盘块上所在位置的指针等. (2)3张表的关系 4. 文件的原子操作 (1)文件追加 ①打开文件时使用O_APPEND标志,进程对文件偏移量

数据结构与算法C++描述学习笔记1、辗转相除——欧几里得算法

前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了.做了一些NOI的题目,这也是一个长期的目标中的一环.做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习.学习的第一本是<数据结构与算法C++描述>第三版,边学边做一些笔记.所以这些笔记中的代码有很多将会非常简单,甚至可能只有一个记录或者结论. 辗转相除法用来求两个整数的最大公约数,即能同时整除两个数的最大整数.程序如下: int gdc(int m,int n){ int rem; while(n!=0){ //