- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机2级公共知识要点
二级公共知识要点
数据结构与算法
所谓算法是指解题方案的准确而完整的描述。
算法的基本特性:
可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的。
确定性:算法中每一条指令都必须有确切的含义,不产生二义性。
有穷性:一个算法必须总是在执行有穷步骤之后结束。
拥有足够的情报:有足够的输入。
算法的基本要素:
一个算法通常由两种基本要素组成:一是对数据对象的运算和操作,二算法的控制结构。
算法的时间复杂度:
所谓算法的时间复杂度,是指执行算法所需要的计算工作量。
算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即:算法的工作量=f(n),其中n 是问题的规模。
例: 采用顺序搜索法,在长度为n 的一维数组中查找值为x的元素。即从数组的第一个元素开始,逐个与被查值x 进行了比较。基本运算为x 与数组元素的比较。最好的情况,第一个元素便是要找的元素,那么只要做一次比较;最坏的情况,这个一维数组中没有值为x 的元素,那么得进行n 次比较,所以这个算法的时间复杂度为n 的函数,即 O(n)。
算法的空间复杂度:
一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外的空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果说额外空间量相对于问题规模来说是常数,则称该算法是原地(in place)工作的。
数据结构是指相互有关联的数据元素的集合。如表,树,图等的数据结构。
数据的逻辑结构:是指反映数据元素之间逻辑关系的数据结构。
Data_Structure=(D,R)
其中,D 是数据元素的集合,R是数据元素之间的关系。
数据的存储结构:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称为数据的物理结构)。
数据结构的图形表示:
例:一年四季的数据结构可以用如下的图形表示:
例:家庭成员间辈分关系的数据结构可以用如下图形表示:
线性结构与非线性结构:
如一个非空的数据结构满足下列两个条件:
有且只有一个根结点;
每一个结点最多有一个前件,也最多有一个后件。
则称该数据结构为线性结构。线性结构又称线性表。
如果一个数据结构不是线性结构,则称之为非线性结构。
线性表:
线性表由一组数据元素构成。数据元素的含义很广泛,在不同的具体情况下,它可以有不同的含义。例如:一个n 维向量(x1,x2,x3,……,xn)是一个长度为n 线性表,其中的每一个分量就是一个数据元素。又如,,英文小写字母表(a,b,c,……,z)是一个长度为26的线性表,其中的每一个小写字母就是一个数据元素。
线性表的顺序存储:
线性表顺序存储结构具有以下两个基本特点:
线性表中所有元素所占的存储空间是连续的;
线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
在线性表的顺序存储结构中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。
顺序表的插入运算:
顺序表的删除运算:
栈是限定在一端进行插入与删除的线性表。“先进后出”,或者“后进先出”。
与一般的线性表一样,在程序设计语言中,用一维数组S(1:n)作为栈的顺序存储空间,其中n 为栈的最大容量。通常指针指向栈空间的低地址一端(即数组的始地址这一端)。
栈的基本运算有三种:入栈,出栈,读栈顶元素。
入栈:入栈运算是指在栈顶位置插入一个新元素。这个运算有两个基本操作:首先将栈顶指针进一(即top加1),然后将新元素插入到栈顶指针指向的位置。
出栈:出栈运算是指取出栈顶元素并赋给一个指定的变量。这个运算有两个基本操作:首先将栈顶元素(栈顶指针指向的元素)赋给一指定变量,然后将栈顶指针退一(即top 减1)。
当栈顶指针top为0时,说明栈空。
读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。必须注意,这个运算不删除栈顶元素,只是将它的值赋给一个变量。
队列是指允许在一端进行插入,而在另一端进行删除的线性表。允许插入的一端称为队尾,通常用一个称为队尾指针(rear)的指针指向队尾元素,允许删除的一端称为队头,通常用一个称为队头指针(front)来指向队头元素。
往队列的队尾插入一个元素称为入队运算,从队列的排头删除一个元素称为退队运算。
线性表的链式存储结构称为线性链表。
数据域 指针域
Data link 线性链表的逻辑结构:
Data1 link Data2 link Data3 link
线性链表的插入运算:
线性链表的删除运算:
双向链表:有两个指针,一是指向后件,一是指向前件。
树是一种简单的非线性结构。在这种数据
文档评论(0)