2019-2020-1学期 20192415 《网络空间安全专业导论》第四周学习总结

2019-2020-1学期 20192415

《网络空间安全专业导论》第四周学习总结

第八章 抽象数据类型与子程序

8.1 抽象数据类型

抽象数据类型(Abstract Data Type,ADT):属性(数据与操作)明确地与特定现实分离的容器

容器(container):存放和操作其他对象的对象

数据结构(data structure):一种抽象数据类型中的复合数据域的实现

     用户层:特定问题中数据的视图
     逻辑层:数据值(域)和处理它们的操作的抽象视图
     实现层:明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码
             (用明确的数据和子程序表示对象的属性,涉及数据结构)
             

8.2 栈

栈(Stack):抽象复合结构,只能从一端访问栈中的元素

     1.可以在第一个位置插入元素,也可以删除第一个元素
     2.LIFO(Last In First Out)
     3.删除的项总是在栈中时间最短的项目
     4.插入操作(Push推进)没有任何约束;整个LIFO行为都体现在删除操作(Pop弹出)上
     5.没有长度属性,没有返回栈中项目个数的操作
     6.需要确定栈是否为空,当栈空时再弹出项目会出错

8.3 队列

队列(Queue):一种抽象复合结构,队列中的项目从一端入,从另一端出

     1.插入操作在队列的尾部(rar)进行,删除操作在队列的头部(front)进行
     2.FIFO
     3.删除的总是在队列中时间最长的项目
     4.插入操作没有任何约束;整个FIFO行为都体现在删除操作上

8.4 列表

  • 列表的列是无止境的
  • 列表有三个属性特征:项目是同构的,项目是线性的,列表是变长的
  • 插入(Insert),删除(Delete),检索(IsThere),报告(GetLength)
  • 项目可以被删除和检索,所以列表中的项目必须能够相互比较
  • 列表≠数组:

         数组是内嵌结构
         列表是抽象结构
         列表应用于数组中
  • 可被形象化为链式结构

         链式结构(linked structure):一个将数据项和找到下一项位置的信息保存到同一容器的实现方法
  • 无序列表
  • 有序列表:项目之间具有语序关系

8.5 树

分层体系结构

8.5.1 二叉树

二叉树(binary tree):具有唯一起始节点的复合抽象结构,其中每个节点可以有两个子女节点,根节点和每个节点之间都有且只有一条路径
子女:每个节点可以有两个后继节点
根(root):树中唯一的开始节点
叶节点(leaf node):没有子女的树节点

8.5.2 二叉检索法

搜索→构造→输出

任何节点的值都要大于它的左子树中的所有节点的值,并且要小于它的右子树中的所有节点的值

      current→节点
      iofo(current)→用户数据
      left(current)→左子树根节点
      right(current)→右子树根节点
      null→空值

二叉检索法的搜索效率与树的形状有关

要输出根的值,必须先输出所有比根的值小的值;输出了根的值后,还必须输出所有比根的值大的值。

???

8.6 图

图(garph):由一组节点和一组把节点相互连接起来的边构成的数据结构

顶点(vertex):图中的节点

边(弧)(edge(arc)):表示图中两个节点的连接的顶点对

无向图(undirected graph):其中的边没有方向的图

有向图(directed graph(disgraph)):其中的边是从一个顶点指向另一个顶点(或同一个顶点)的图

加权图表示有附加值的图2019-2020-1学期 20192415 《网络空间安全专业导论》第四周学习总结_第1张图片

   用数学语言讲,设G为图,对图的每一条边e来说,都对应于一个实数W(e)(可以通俗的理解为边的“长度”,只是在数学定义中图的权可以为负数),我们把W(e)称为e的“权”。把这样的图G称为“加权图”。

邻顶点(adjacent vertice):通过边连接起来的两个顶点

路径(path):连接图中两个顶点的一系列顶点

8.6.1 创建图
8.6.2 图算法
  • 深度优先搜索

栈是一项存储顶点的合适的数据结构。

检查第一个与起点相邻的顶点,若非终点则检查所有与第一个顶点相邻的顶点。

沿着一条路径尽可能深地访问各个节点,如果没有找到终点则回溯。

必须回溯时,选择离你无法走通位置最近的分支继续搜索。

  • 广度优先搜索

想要回溯到尽可能远,以找到最初的顶点出发的路径。

栈是按照元素出现的相反的顺序来保存元素。

  • 单源最短路搜索

8.7 子程序

许多子程序都是高级语言或语言附带库的一部分。

8.7.1 参数传递

参数列表(parameter list):程序中两部分之间的通信机制

形参(paramter):列在子程序名后的括号中的标识符

               看作子程序中使用的临时标志符,定义子程序中的动作。

实参(argument):子程序调用中列在括号中的标识符

              实参表示的是调用单元中的真正变量。

调用子程序时传递的实参个数必须与子程序中定义的形参个数相同。二者根据位置匹配。

8.7.2 值参与引用参数

传递参数的基本方式:值传递/引用(地址)传递

值参(value parameter):由调用单元传入实参的副本(写在留言板上)的形参

引用参数(reference parameter):由调用单元传入实参的地址(写在留言板上)的形参

问题

在二叉检索法中,要输出根的值,为什么必须先输出所有比根的值小的值,之后还必须输出所有比根的值大的值?

第九章 面向对象设计与高级程序设计语言

9.1 面向对象方法

9.1.1 面向对象

2019-2020-1学期 20192415 《网络空间安全专业导论》第四周学习总结_第2张图片

9.1.2 设计方法
  • 集体讨论

产生暂时列表

  • 过滤

相同的类,有共同属性和行为的类,不属于问题的解决方案的类→过滤

  • 场景

给每个类分配场景,责任将被实现为子程序

封装(encapsulation):把数据和动作的逻辑属性与它们的实现细节分离

  • 责任

在面向对象的设计观念,重点是数据而不是动作

9.2 翻译过程

9.2.1 编译器

2019-2020-1学期 20192415 《网络空间安全专业导论》第四周学习总结_第3张图片

9.2.2 解释器

你可能感兴趣的:(2019-2020-1学期 20192415 《网络空间安全专业导论》第四周学习总结)