其他分享
首页 > 其他分享> > 2020-2021-1学期 20202421《网络空间安全专业导论》第四周学习总结

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

作者:互联网

本周学习内容

第八章

本章主要介绍了抽象数据类型以及相关的许多概念
下面会列出一些相对重要的概念

抽象数据类型

抽象数据类型是计算机科学中具有类似行为的数据结构的数学模型,或者具有类似语义的一种或多种程序设计语言的数据类型。其特征主要体现在数据抽象,数据封装,继承性,多态性。在编程语言的应用中,经常见到的几个抽象数据的应用如下:关联数组,如c++中的%d等引用,复数,容器,双端队列,列表队列,堆栈,字符串,树。这些内容都与抽象数据有着密不可分的关系。
接下来对抽象数据类型中一些较为重要的内容进行记录

图是由由一组节点和一组把节点相互连接起来的边构成的数据结构。这部分内容涉及到较为深入的算法内容,如深度优先搜索,广度优先搜索,单源最短路搜索,接下来举一个广度优先搜索的代码例子
#include<iostream>
#include<queue>
using namespace std; int a[30][30],b[30]; int n,m; struct node{ int wss[30]; int num[30]; int ans; }q; void bfs() { queue<node>que; q=que.front(); for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) q.wss[j]=a[i][j]; q.num[1]=i; q.ans=1; que.push(q); } while(!que.empty()) { node s,t; s=que.front(); t=que.front(); que.pop(); bool w=1; for(int i=1;i<=n;i++) { if(s.wss[i]<b[i]) { w=0; break; } } if(w==1) { cout<<s.ans<<' '; for(int i=1;i<=s.ans;i++)cout<<s.num[i]<<" "; return; } for(int i=s.num[s.ans]+1;i<=m;i++) { for(int j=1;j<=n;j++) t.wss[j]=s.wss[j]+a[i][j]; t.ans=s.ans+1; t.num[t.ans]=i; que.push(t); } } } int main() { cin>>n; for(int i=1;i<=n;i++) cin>>b[i]; cin>>m; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) cin>>a[i][j]; bfs(); return 0; }
以上代码是较为基础的dfs应用

二叉检索树

二叉树的定义如下:
一棵空树,或者是具有下列性质的二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
在很多情况下 二叉检索树是一种较优的算法 考虑速度以及复杂度时都是较好的选择 这部分内容与链表的关系也很大 但二叉树算法在大部分情况下优于链表

第九章

本章主要介绍了面向对象方面的一些内容以及高级程序设计语言的一些基础内容 以下列出一些我认为较为重要的

编译

编译是利用编译程序从源语言编写的源程序产生目标程序的过程也可以说是编译程序产生目标程序的动作 在各种语言中 这个过程都不尽相同 例如 在c++中 这个过程从源代码进入编译器开始,首先变为汇编代码,在进入汇编器变为目标代码,之后目标代码,库文件和其他目标代码一同进入链接器生成可执行程序。

封装

封装是指隐藏对象的的属性和实现细节,仅提供公共访问方式。封装的方式有很多,举个例子:将成员变量私有化,对外提供对应的set ,get方法对其进行访问以提高对数据访问的安全性。

标签:结点,int,代码,30,抽象数据类型,网络空间,内容,2020,20202421
来源: https://www.cnblogs.com/menethil2/p/13934081.html