




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第3章作业(3.53.63.103.213.293.32),全校各单位:根据国务院办公厅关于2010年国庆节放假的通知精神,今年国庆节学校放假的时间定为10月1日至7日,共7天。10月1日(星期五)、10月2日(星期六)、10月3日(星期日)为国庆节法定节假日,10月2日(星期六)、10月3日(星期日)公休日分别调至10月4日(星期一)、10月5日(星期二),9月26日(星期日)、10月9日(星期六)公休日分别调至10月6日(星期三)、10月7日(星期四)。9月26日(星期日)、10月9日(星期六)上班。10月1日(星期五)、10月2日(星期六)、10月3日(星期日)全校停课,请任课教师和学生关注各教学职能部门国庆节期间的停调课安排。节假日期间,各单位要妥善安排好值班和安全、保卫等工作,于9月28日前将值班安排分别送交学校办公室和保卫处。遇有重大突发事件发生,要及时报告并妥善处理,确保全校师生员工祥和平安度过节日假期。后勤集团、产业集团等单位可根据自身情况作好安排。各附属单位自行安排。学校办公室二0一0年九月十三日,2,内容安排,上机地点:南一楼东头二电信系机房第4、9、12周,周五晚上,3,第3章小结,线性表、栈、队的异同点:相同点:逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。,运算规则不同:线性表为随机存取;而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。,用途不同。线性表比较通用;堆栈用于函数调用、递归和简化设计等;队列用于离散事件模拟、OS作业调度和简化设计等。(以后再举例),不同点:,4,第4章串(String),4.1串类型的定义4.2串的表示和实现4.3串的模式匹配算法,5,主要内容,模式匹配即子串定位运算,即如何实现Index(S,T,pos)函数,精华:KMP算法快速(用nextj或nextvalj),6,记为:s=a1a2.an(n0),串即字符串,是由零个或多个字符组成的有限序列,是数据元素为单个字符的特殊线性表。,4.1串类型的定义,隐含结束符0,即ASCII码NUL,为何要单独讨论“串”类型?1)字符串操作比其他数据类型更复杂(如拷贝、连接操作)2)程序设计中,处理对象很多都是串类型。,7,若干术语:,串长:串中字符的个数(n0)。n=0时称为空串。空白串:由一个或多个空格符组成的串。,问:空串和空白串有无区别?答:有区别。空串(NullString)是指长度为零的串;而空白串(BlankString),是指包含一个或多个空白字符(空格键)的字符串.,8,子串:子串位置:字符位置:串相等:,例1:现有以下4个字符串:a=BEIb=JINGc=BEIJINGd=BEIJING,问:他们各自的长度?,a是c和d的子串,在c和d中的位置都是1,串S中任意个连续的字符序列叫S的子串;S叫主串。子串的第一个字符在主串中的序号。字符在串中的序号。串长度相等,且对应位置上字符相等。,a是哪个串的子串?在主串中的位置是多少?,a=3,b=4,c=7,d=8,“空串是任意串的子串;任意串S都是S本身的子串,除S本身外,S的其他子串称为S的真子串。”数据结构与算法中山大学出版社,空串是哪个串的子串?a是不是自己的子串?,9,C语言中已有类似的串运算函数!,ADTStringObjects:D=ai|aiCharacterSet,i=1,2,,n,n0Relations:R1=|ai-1,aiD,i=2,,nfunctions:/至少有13种基本操作StrAssign(求串长:intstrlen(char*s);串连接:charstrcat(char*to,char*from)子串T定位:charstrchr(char*s,char*c);,注:用C处理字符串时,要调用标准库函数#include,类CStrCompare(S,T)StrLength(S)Concat(SStrings;/s是一个可容纳255个字符的顺序串。,注:一般用SString0来存放串长信息(如pascal语言);C语言约定在串尾加结束符0,以利操作加速,但不计入串长(用首址和串长、或首址和尾标记来描述串数组)若字符串超过Maxstrlen则自动截断(因为静态数组存不进去)。,16,例:用顺序存储方式编写求子串函数SubString(/若非空串,按串长分配空间;否则ch=NULLintlength;/串长度HString,堆分配存储特点:仍用一组连续的存储单元来存放串,但存储空间是在程序执行过程中动态分配而得。,堆T的存储结构描述:,各分量书写方式:T.chT.length,18,C是指针变量,可以自增!意即每次后移一个数据单元。,直到终值为“假”停止,串尾特征是c0NULL0,StatusStrAssign(HString/求chars的串长度i,例1:编写建堆函数(参见教材P76),此处T.ch0没有用来装串长,因为另有T.length分量,if(!i)T.ch=NULL;T.length=0;elseif(!(T.ch=(char*)malloc(i*sizeof(char)exit(OVERFLOW);T.ch0.i-1=chars0.i-1;T.length=i;ReturnOK;/StrAssign,19,StatusStrInsert(HString/StrInsert,例2:用“堆”方式编写串插入函数(参见教材P75),20,讨论:法1存储密度为;法2存储密度为;,显然,若数据元素很多,用法2存储更优称为块链结构,链式存储特点:用链表存储串值,易插入和删除。,法1:链表结点的数据分量长度取1(个字符),法2:链表结点(数据域)大小取n(例如n=4),1/2,9/15=3/5,21,对块链表的整体描述,#defineCHUNKSIZE80/每块大小,可由用户定义typedefstructChunk/首先定义结点类型charchCHUNKSIZE;/每个结点中的数据域structChunk*next;/每个结点中的指针域Chunk;,块链类型定义:,块链函数的编写略,typedefstruct/定义用链式存储的串类型Chunk*head;/头指针Chunk*tail;/尾指针intcurLen;/结点个数Lstring;/串类型只用一次,前面可以不加结构名称,对每个结点的描述,22,算法目的:确定主串中所含子串第一次出现的位置(定位),4.3串的模式匹配算法,BF算法(又称古典的、经典的、朴素的、穷举的)KMP算法,算法种类:,带回溯,速度慢,避免回溯,匹配速度快,是全课程的亮点之一,定位问题称为串的模式匹配,典型函数为Index(S,T,pos),23,BF算法的实现即编写Index(S,T,pos)函数,例1:S=ababcabcacbab,T=abcac,pos=1,求:串T在串S中第pos个字符之后的位置。,利用演示系统看BF算法执行过程。,BF算法设计思想:将主串S的第pos个字符和模式T的第1个字符比较,若相等,继续逐个比较后续字符;若不等,从主串S的下一字符(pos+1)起,重新与T第一个字符比较。,直到主串S的一个连续子串字符序列与模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 码头维修工程施工合同协议书
- 生产安全培训50条禁令课件
- 关于设立“XXX企业奖学金”的合作协议书7篇
- 安全施工培训例会记录课件
- 安全方针培训会议内容课件
- 安全文明驾驶培训讲座课件
- 理性主义课件
- 电缆工程加速推进方案(3篇)
- 蒙山远卓兴全医院建设项目环境影响报告表
- 玲铃的画完整课件
- 幼儿园中国传统文化培训
- 幼儿园开学卫生消毒培训
- 医院信息化建设中长期规划(十五五规划2025年)
- 2024年全国导游资格考试《全国导游基础知识》真题和解析
- 国家中医药管理局《中医药事业发展“十五五”规划》全文
- 中式面点课件
- 抖店内衣考试题库及答案
- 黄金回收合同协议书模板
- 招商局集团招聘考试真题2024
- 《提升思维高度:战略思维培养与应用》课件
- 认知障碍老人护理步骤
评论
0/150
提交评论