第三章 网络基础知识
第三章网络基础知识
第一节网络的组成与结构
一、网络组成
1、通信主体:服务器和工作站
2、通信设备:传输介质、网络设备
3、通信协议:通常是TCP/IP
二、网络分类
按传输距离分:局域网(LAN)、城域网(MAN)、广域网(WAN)按网络结构分:总线型、星型、环型、树型
三、网络拓扑结构
第二节网络协议
一、OSI网络协议的层次
国际标准化组织(ISO)提出的“开放系统互连模型(OSI)”是计算机网络通信的基本协议。该协议分为七层。如下表
二、网络设备极其作用
第三节 Internet相关知识
一、IP地址
每台与Internet连接的主机都必须有一个IP地址,IP地址采用分段式表示:共分4段,每段用一个字节即八个二进制位表示,实际的IP把二进制转换成十进制书写。如61.153.238.132,因为每段时一个字节,因此IP每段的数字大小最大为255。
IP地址分类如下表:目前32位IP地址资源几近枯竭,有人提出用128位表示IP,即IPV6 。
二、域名:Internet的域名系统叫做DNS,DNS是树形结构的。域名跟IP地址是多对一的关系
1、域名分级系统:一个域名最右边的部分通常叫顶级域名,往前依次为二级域名、三级域名等。
2、我国域名管理机构:CNNIC
3、常见域名含义:
gov 政府 edu 教育 int 国际组织 com 商业组织 mil 军事部门 net 网络运行 org 其他组织cn 中国 hk 香港 tw 台湾 uk 英国 jp 日本
三、一些常见名词解释
1、Intranet:企业内部网
2、ISP(Internet Service Provider):因特网服务供应商
3、ICP(Internet Content Provider):因特网内容供应商
4、IAP(Internet Acess Provider):因特网接入供应商,目前一般都被ISP包含
5、BBS:电子公告栏,目前通常叫论坛
四、接入Internet的方法
1、PSTN拨号接入:必须设备MODEM,电话线,速度慢
2、DDN专线接入:速度快,费用高。
3、ISDN专线接入:利用传统电话网络的综合业务数字网。
4、分组交换接入
5、帧中继接入
第四章其他相关基础知识
第一节计算机病毒
一、特点
寄生性、隐蔽性、非法性、传染性、破坏性
二、分类:
1、引导型病毒:寄生在系统引导区,比较容易被清除,现在已经很少见。
2、文件型病毒:寄生在可执行文件中,感染速度快,较易清除。
3、目录型病毒:寄生在系统目录结构中
4、混合型病毒:多种类型的混合
5、宏病毒:专门感染Microsoft Office 系列文件的病毒
6、蠕虫病毒:感染网络,使网速大大降低。
目前流行的病毒大多集成了黑客技术、木马技术和病毒技术三种,非常难以清除而且很容易中。
三、一些常见危害较大的病毒
1、CIH病毒:文件型病毒,4月26日发作时破坏性最大,首个能破坏硬件系统的病毒。
2、Melissa病毒:宏病毒,邮件传播
3、冲击波、震荡波病毒:利用WINDOWS的漏洞,使计算机自动重启并堵塞网络。
第二节数据库系统
一、数据库是数据的一种组织形式,目前存储大量数据基本都采用数据库
常见的数据库软件有:FoxBase、FoxPro、Access、Sql Server、MySql、Sybase、Oracel等。除了最早的如FoxBase等软件,目前流行的数据库软件都是关系型数据库。
二、数据库数据结构
数据库系统的数据结构可以认为是多张二维表,二维表中的列称为字段,行存放数据。如下图
二、数据操作
用以对数据库进行检索和更新(添加、删除、更新等)操作
三、数据的完整性约束条件
多个表之间的数据可能存在相互关联,必须保证其完整性
四、数据库操作语言SQL
数据库常用的操作语言称为SQL语言,是一种更高级化的语言,只须告诉计算机做什么事情即可。下面例举几条常用的语句。
1、SELECT 语句
语法:select <列名> from <表名> where <条件>
功能:从表中选出满足条件的记录列
2、INSERT 语句
语法:insert into <表名>[(列名表)] values(<值表>)
功能:在表中插入一条新记录。
3、DELETE 语句
语法:delete * from <表名> where <条件>
功能:删除满足条件的记录
4、UPDATE 语句
语法:update <表名> set <列名>=<值> where <条件>
功能:修改满足条件的表中某记录某字段的值
第一节线性表
一、概念
线性表是指由有限个类型相同的数据元素组成的集合,它有以下的特点:
1.有唯一的头结点(即第一个数据元素)和尾结点(即最后一个数据元素);
2.除结点外,集合中的每个数据元素均只有一个前驱;
3.除尾结点外,集合中的每一个数据元素均只有一个后继。
二、线性表的存储结构
1、顺序结构:是通过数组说明分配连续地址的存储区,通过下标引用数组的相应元素。
2、链式结构:通过指引元素类型的变量对线性表中元素进行动态分配存储。
三、顺序存储结构
1、一维数组
① 数组存储的结构在数组声明时就需要事先分配相应的连续内存空间用来存放数据。
② 按首地址(表中第一个元素的地址)的位移来访问数组每一个元素的。
若第一个元素的地址是a,每个元素占用的存储空间为L,则数组的第i个元素的地址可以用如下公式计算:
d(i)=a+(i-1)*L
2、二维数组
① 定义方法:<数组名>:array[1..n,1..m] of <元素类型>
② 对于行为n,列为m的二维数组的元素访问方法:若第一个元素的地址是a,每个元素占用的存储空间为L,则数组的第(i,j)个元素的地址可以用如下公式计算:
按行寻址:d(i,j)=a+(i-1)*m*L+(j-1)*L
按列寻址:d(i,j)=a+(j-1)*n*L+(i-1)*L
四、链式存储结构
链表是这样一种线性表,它的元素由数据和指针两部分组成,数据部分存放结点的有关信息,指针部分存放下一个结点的位置。
优点:可根据需要分配数据元素的存储区,也可随时撤消链表中数据元素的存储区,插入删除操作只须改变指针,无须移动数据。
缺点:它的数据元素必须在数据项以外至少增加一个指向后继元素的指针类型的数据项,查找其中的某个元素时必须中从第一个元素开始逐个往后找。
一个实例:
Type
pointer=^node;
node=Record;
data:real;
next:pointer;
End;
Var
head,next:pointer;
1.Head为表的首指针,指向链表的第一个结点。
2.整个链表的存取必须从head指针出发,沿着每个结点的next指针顺序进行,最后个结点的next指针为“空”(nil).
第二节栈
一、栈的概念
栈是一种线性表,对它的插入和删除操作都限制在表的同一端进行。这一端叫做栈顶,另一个端叫做栈底。栈又被成为“后进先出表”(LIFO)。
定义方法:
Const
m=栈元素的上限;
Type
stack=array[1..m] of <元素类型>
Var
s:stack;
t:integer;
二、栈的基本运算
1.入栈:过程push(x),往栈s中压入一个元素x。
procedure push(x:<元素类型>);
begin
if t=m
then writeln(‘overflow’)
else begin
t:=t+1;
s[t]:=x;
end;
end;
2.出栈:函数pop(x),从栈s中弹出一个元素。
function pop:<元素类型>;
begin
if t=0
then writeln('empty')
else begin
pop:=s[t];
t:=t-1;
end;
end;
3.读栈顶元素:函数top,读取栈s的栈顶元素。
function top:<元素类型>;
begin
if t=0
then writeln('empty')
else top:=s[t];
end;
第三节队列
一、栈的概念
队列是从日常生活中的排队抽象出来的,根据排队的原则“先来先服务”。所谓队列就是允许在一端进行插入,另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个队尾指针r 指向队尾元素;允许删除的一端称为队首,通常也用一个队首指针f指向排头元素的前面。初始时,f=r=0。队列又称为“先进先出(FIFO)”线性表。
定义方法:
Const
m=队列元素上限;
Type
duilie=array[1..m] of <元素类型>; Var
q:duilie; r,f:integer;
二、队列的基本运算
1.过程add(x):队列q插入元素x
Procedure add(x:integer);
begin
if r=m
then writeln(‘overflow’)
else begin
r:=r+1;
q[r]:=x;
end;
end;
2.过程del(x):取出队列q的队首元素y
Procedure del(var y:integer);
begin
if f=r
then writeln(‘empty’)
else begin
f:=f+1;
y:=q[f];
end;
end;
第一节树的概念
教学课件下载
一、树的定义
树是一种常见的非线性的数据结构。
树的定义:树是n(n>0)个结点的有限集,这个集合满足以下条件:
⑴ 有且仅有一个结点没有前驱(父亲结点),该结点称为树的根;
⑵ 除根外,其余的每个结点都有且仅有一个前驱;
⑶ 除根外,每一个结点都通过唯一的路径连到根上。这条路径由根开始,而未端就在该结点上,且除根以外,路径上的每一个结点都是前一个结点的后驱(儿子结点);
二、结点的分类
在树中,一个结点包含一个元素以及所有指向其子树的分支。
结点一般分成三类:
⑴ 根结点:没有前驱的结点。在树中有且仅有一个根结点。如上图(b)中的r;
⑵ 分支结点:除根结点外,有后驱的结点称为分支结点。如上图(b)中的a,b,c,x,t,d,i。分支结点亦是其子树的根;
⑶ 叶结点:没有后驱的结点称为树叶。如上图(b)中的w,h,e,f,s,m,o,n,j,u为叶结点。由树的定义可知,树叶本身也是其父结点的子树。根结点到每一个分支结点或叶结点的路径是唯一的。例如上图(b)中,从根r到结点i的唯一路径为rcti。
三、有关度的定义
⑴ 结点的度:一个结点的子树数目称为该结点的度。在上图(b)中,结点i度为3,结点t的度为2,结点b的度为1。显然,所有树叶的度为0。
⑵ 树的度:所有结点中最大的度称为该树的度。图(b)中的树的度为3。
四、树的深度(高度)
树是分层次的。结点所在的层次是从根算起的。根结点在第一层,根的后件在第二层,其余各层依次类推。即若某个结点在第k层,则该结点的后件均处在第k+1层。
图(b)中的树共有五层。在树中,父结点在同一层的所有结点构成兄弟关系。树中最大的层次称为树的深度,亦称高度。图(b)中树的深度为5。
五、森林
所谓森林,是指若干棵互不相交的树的集合。
如图(b)去掉根结点r,其原来的三棵子树Ta,Tb,Tc的集合{Ta,Tb,Tc}就为森林,这三棵子树的具体形态如图(c)。
六、有序树和无序树
按照树中同层结点是否保持有序性,可将树分为有序树和无序树。如果树中同层结点从左而右排列,其次序不容互换,这样的树称为有序树;如果同层结点的次序任意,这样的树称为无序树。
第二节树的表示方法和存储结构
一、树的表示方法
树的表示方法一般有两种:
⑴ 自然界的树形表示法:用结点和边表示树,例如下图采用的就是自然界的树形表示法。树形表示法一般用于分析问题。
⑵ 括号表示法:先将根结点放入一对圆括号中,然后把它的子树按由左而右的顺序放入括号中,而对子树也采用同样方法处理:同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。例如下图(b)可写成如下形式(r(a(w,x(d(h),e)),b(f),
c(s,t(i(m,o,n),j),u)))
二、树的存储结构
树的存储结构一般有两种
1.静态的记录数组
所有结点存储在一个数组中,数组元素为记录类型,包括数据域和长度为n(n为树的度)的数组,分别存储该结点的每一个儿子的下标。
该图用静态数组方法保存如右表
2.动态的多重链表
由于树中结点可以有多个元素,所以可以用多重链表来描述比较方便。所谓多重链表,就是每个结点由数据域和n(n 为树的度)个指针域共n+1个域组成,其表示方法如下:
上图用多重链表表示如下:
第三节二叉树的概念
一、二叉树的递归定义和基本形态
1.二叉树是一种很重要的非线性数据结构,它的特点是每个结点最多有两个后继,且其子树有左右之分(次序不能任意颠倒)。
2.二叉树是以结点为元素的有限集,它或者为空,或者满足以下条件:
⑴ 有一个特定的结点称为根;
⑵ 余下的结点分为互不相交的子集L和R,其中L是根的左子树;R是根的右子树;L和R又是二叉树;
由上述定义可以看出,二叉树和树是两个不同的概念:
⑴ 树的每一个结点可以有任意多个后继,而二叉树中每个结点的后继不能超过2;
⑵ 树的子树可以不分次序(除有序树外);而二叉树的子树有左右之分。我们称二叉树中结点的左后继为左儿子,右后继为右儿子。
3.二叉树的五种基本形态
二、二叉树的两个特殊形态
1.满二叉树:如果一棵二叉树的任何结点,或者是树叶,或者恰有两棵非空子树,则此二叉树称作满二叉树。(例如下图(a))可以验证具有n个叶结点的满二叉树共有2n-1个结点。
2.完全二叉树:如果一棵二叉树最多只有最下面两层结点度数可以小于2,并且最下面一层的结点都集中在该层最左边的若干位置上,则称此二叉树为完全二叉树(例如下图(b))
三、二叉树的三个主要性质
性质1:在二叉树的第i(≥1)层上,最多有2i-1个结点。
性质2:在深度为k(k≥1)的二叉树中最多有2k-1个结点。
性质3:在任何二叉树中,叶子结点数总比度为2的结点多1。
四、普通有序树转换成二叉树
普通树为有序树T,将其转化成二叉树T’的规则如下:
⑴ T中的结点与T’中的结点一一对应,即T中每个结点的序号和值在T’中保持不变;
⑵ T中某结点v的第一个儿子结点为v1,则在T’中v1为对应结点v的左儿子结点;
⑶ T中结点v的儿子序列,在T’中被依次链接成一条开始于v1的右链;
由上述转化规则可以看出,一棵有序树转化成二叉树的根结点是没有右子树的,并且除保留每个结点的最左分支外,其余分支应去掉,然后从最左的儿子开始沿右儿子方向依次链接该结点的全
部儿子。
五、森林转换成二叉树
如果m棵互不相交的普遍有序树组成了森林F={T1,…Tm}。我们可以按下述规则将森林F转换成一棵二叉树b={R,LB,RB}:
⑴ 若F为空(m=0),则b为空树;
⑵ 若F非空(m≠0),则b的根R即为森林中第一棵树的根R(T1);b的左子树LB是从T1的根结点的子树森林F1={T11,T12,…T1k}转换而成的二叉树;其右子树RB是从森林F2={T2,T3,…,Tm}转换成的二叉树。
第四节二叉树的遍历
一、树的存储结构
1.顺序存储结构
将每个结点依次存放在一维数组中,用数组下标指示结点编号,编号的方法是从根结点开始编号1,然后由左而右进行连续编号。每个结点的信息包括
⑴ 一个数据域(data);
⑵ 三个指针域,其中有父结点编号(prt)、左儿子结点编号(lch)和右儿子结点编号(rch)。满二叉树和完全二叉树一般采用顺序存储结构。
2.链式存储结构
对于一般的二叉树,通常采用链式分配,即用二重链表表示一般的二叉树。这种链式分配即可以采用静态数据结构(数组),又可以采用动态数据结构(指针)。如果二叉树的存储需求量超过64Kb,则采用后者。由于二叉树中每个结点通常包括数据元素和两个分支。因此二叉树对应的二重链表中每个结点应有三个域:
⑴ 值域: data
⑵ 左指针域:lch
⑶ 右指针域:rch
这种链表也称为二叉链表。二叉链表头指针bt指向二叉树的根结点
二、二叉树的遍历
1.二叉树遍历的定义
按照一定的规律不重复地访问(或取出结点中的信息,或对结点作其它的处理)二叉树中的每一个结点。
2.二叉树遍历的顺序
如果用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,则对二叉树的遍历可以有下列六种(3!=6)组合:LDR、 LRD、 DLR、 DRL、RDL、 RLD。若再限定先左后右的次序,则只剩下三种组合:LDR(中序遍历)、LRD(后序遍历)、DLR(前序遍历)。
以下遍历以该树为例
三、前序遍历
规则如下:
若二叉树为空,则退出。否则
⑴ 访问处理根结点;
⑵ 前序遍历左子树;
⑶ 前序遍历右子树;
如上图的前序遍历结果为 a b d e h i c f g