首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 求职招聘 论文下载
2011中考 | 2011高考 | 2012考研 | 考研培训 | 在职研 | 自学考试 | 成人高考 | 法律硕士 | MBA考试
MPA考试 | 中科院
四六级 | 职称英语 | 商务英语 | 公共英语 | 托福 | 雅思 | 专四专八 | 口译笔译 | 博思 | GRE GMAT
新概念英语 | 成人英语三级 | 申硕英语 | 攻硕英语 | 职称日语 | 日语学习 | 法语 | 德语 | 韩语
计算机等级考试 | 软件水平考试 | 职称计算机 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
华为认证 | Java认证
公务员 | 报关员 | 银行从业资格 | 证券从业资格 | 期货从业资格 | 司法考试 | 法律顾问 | 导游资格
报检员 | 教师资格 | 社会工作者 | 外销员 | 国际商务师 | 跟单员 | 单证员 | 物流师 | 价格鉴证师
人力资源 | 管理咨询师考试 | 秘书资格 | 心理咨询师考试 | 出版专业资格 | 广告师职业水平
驾驶员 | 网络编辑
卫生资格 | 执业医师 | 执业药师 | 执业护士
会计从业资格考试会计证) | 经济师 | 会计职称 | 注册会计师 | 审计师 | 注册税务师
注册资产评估师 | 高级会计师 | ACCA | 统计师 | 精算师 | 理财规划师 | 国际内审师
一级建造师 | 二级建造师 | 造价工程师 | 造价员 | 咨询工程师 | 监理工程师 | 安全工程师
质量工程师 | 物业管理师 | 招标师 | 结构工程师 | 建筑师 | 房地产估价师 | 土地估价师 | 岩土师
设备监理师 | 房地产经纪人 | 投资项目管理师 | 土地登记代理人 | 环境影响评价师 | 环保工程师
城市规划师 | 公路监理师 | 公路造价师 | 安全评价师 | 电气工程师 | 注册测绘师 | 注册计量师
缤纷校园 | 实用文档 | 英语学习 | 作文大全 | 求职招聘 | 论文下载 | 访谈 | 游戏
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 复习资料 > 程序员资料 > 正文

2006年软考程序员数据结构复习笔记

数据就是指能够被计算机识别、存储和加工处理的信息的载体。
  数据元素是数据的基本单位,有时一个数据元素可以由若干个数据项组成。数据项是具有独立含义的最小标识单位。如整数这个集合中,10这个数就可称是一个数据元素.又比如在一个数据库(关系式数据库)中,一个记录可称为一个数据元素,而这个元素中的某一字段就是一个数据项。
  数据结构的定义虽然没有标准,但是它包括以下三方面内容:逻辑结构、存储结构、和对数据的操作。这一段比较重要,我用自己的语言来说明一下,大家看看是不是这样。 
 比如一个表(数据库),我们就称它为一个数据结构,它由很多记录(数据元素)组成,每个元素又包括很多字段(数据项)组成。那么这张表的逻辑结构是怎么样的呢? 我们分析数据结构都是从结点(其实也就是元素、记录、顶点,虽然在各种情况下所用名字不同,但说的是同一个东东)之间的关系来分析的,对于这个表中的任一个记录(结点),它只有一个直接前趋,只有一个直接后继(前趋后继就是前相邻后相邻的意思),整个表只有一个开始结点和一个终端结点,那我们知道了这些关系就能明白这个表的逻辑结构了。 
  而存储结构则是指用计算机语言如何表示结点之间的这种关系。如上面的表,在计算机语言中描述为连续存放在一片内存单元中,还是随机的存放在内存中再用指针把它们链接在一起,这两种表示法就成为两种不同的存储结构。(注意,在本课程里,我们只在高级语言的层次上讨论存储结构。) 
  第三个概念就是对数据的运算,比如一张表格,我们需要进行查找,增加,修改,删除记录等工作,而怎么样才能进行这样的操作呢? 这也就是数据的运算,它不仅仅是加减乘除这些算术运算了,在数据结构中,这些运算常常涉及算法问题。
  弄清了以上三个问题,就可以弄清数据结构这个概念。

(答案及点评) 3.4 设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢? 


3.4答:当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。
第四章:串(包括习题与答案及要点)

转摘www.Ezikao.com

--------------------------------------------------------------------------------
本章介绍了串的逻辑结构,存储结构及串上的基本运算,由于在高级语言中已经提供了较全善的串处理功能,因此本章的重点是掌握在串上实现的模式匹配算法。同时这也是本章的难点。但是从全书来讲,这属于较简单的一章内容。 

--------------------------------------------------------------------------------
1.串及其运算(领会)(这些内容比较容易理解,不用死记)
串就是字符串,是一种特殊的线性表,它的每个结点仅由一个字符组成。
空串:是指长度为零的串,也就是串中不包含任何字符(结点)。
空白串:指串中包含一个或多个空格字符的串。不同与空串,它的结点就是一个空格字符。
在一个串中任意个连续字符组成的子序列称为该串的子串,包含子串的串就称为主串。子串在主串中的序号就是指子串在主串中首次出现的位置。如A="I love you" B="love",则B在A中的序号为3,注意空格也是字符。
空串是任意串的子串,任意串是他自身的子串。
串分为两种:串常量和串变量。串常量在程序中不能改变,串变量则可以。
关于串的基本运算,基本上在C语言中已经学过,主要有
求串长strlen(char *s)、
串复制strcpy(char *to,char *from)、
串联接strcat(char *to,char *from)、
串比较charcmp(char *s1,char *s2)
和字符定位strchr(char *s, char c)等
这些基本运算通过练习来掌握。

--------------------------------------------------------------------------------
2.串的存储结构(简单应用)
串是特殊的线性表(结点是字符),所以串的存储结构与线性表的存储结构类似。
串的顺序存储结构简称为顺序串,顺序串又可按存储分配的不同分为静态存储分配的顺序串和动态存储分配的顺序串。
静态的意思可简单地理解为一个确定的存储空间,它的长度是不可变的。如直接使用定长的字符数组来定义一个串。它的优点是涉及串长的操作速度快,因为它的最大长度是不变的。
动态存储分配就是在定义串时不分配存储空间,直到需要使用时按所需串的长度分配存储单元给它,并且在运行中还可以根据需要变化串的长度,这就是动态分配。不过这样的串仍是顺序存储的,也就是说指针指向串的首地址,后面的结点是连续存储的。
串的链式存储就是用单链表的方式存储串值,串的这种链式存储结构简称为链串。链串与单链表的差异只是它的结点数据域为单个字符。这种存储结构方便于串的插入和删除操作,但是空间利用率不高,因为存放每一个字符要"搭配"一个指向下一字符的地址,而地址所占空间是比较大的。为了解决这种"存储密度"过低的状况,可以让一个结点存储多个字符,事实上这是顺序串和链串的综合(折衷)。

--------------------------------------------------------------------------------
本章的重点和难点就是串运算的实现,特别是顺序串上子串定位的运算。
子串定位运算又称串的"模式匹配"或"串匹配",就是在主串中查找出子串出现的位置,这在应用中非常广泛,比如文本编辑中的"查找和替换"用到的就是子串定位运算的算法。
在串匹配中,将主串称为目标(串),子串称为模式(串),我们这样想象,子串就如同一个模板(样本),用它在目标上对比,从头往后比较,凡是遇到一模一样的那么一段,就算找到一个位置了(我们就说,从这个位置开始的匹配成功)。用很专业的很酷的话说就是"模式在目标中出现"(我想起了警匪片里的对话),如果这个模板对应的目标串中有不一样的字符出现,那么这个位置就匹配失败。
当我们用这个模子依次从目标的头部往后移,移动到的位置就叫位移,如果每次向右移动1格,那么每次的位移就加上1。
每次移动后要看看模板里的字符和目标中相应的字符是否相等,如果都相同,这次位移就叫有效位移(其实就是从这个位置开始的匹配成功)
另外有一个合法位移和不合法位移的概念,就是说,移动一个位置后,如果模板的最后一个字符还没有超出目标串中最后一个字符时,这个位移就是合法位移,如果超出了,那么就没有比较的意义了,这时就是不合法位移。
这是比较容易理解的,串匹配问题就是找出给定模式串P在给定目标串T中首次出现的有效位移或者是全部有效位移。
具体的串匹配算法也不是很难理解,就是用两个循环,外循环用于进行模式的位移,内循环进行模板内每个字符的比较(判断是否有效位移)。关于串匹配的时间复杂度,在最坏的情况下就是目标串和模式串分别是"a^n-1b"和"a^m-1b"的形式,就是说,每一次合法位移后,在内循环中都要比较m个字符才知道是不是有效位移(前面的字符都是一样的)。所以最坏的情况下时间复杂度是O((n-m+1)m),假如m与n同阶的话则它是O(n^2)。

上一页  1 2 3 4 5 6 7 8 9 10  下一页
文章搜索
软件水平考试栏目导航
版权声明:如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。