中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第四章 串和数组

第四章串和数组 4.1串的定义* 4.2串的表示和实现* 4.3数组 4.4数组的压缩 ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 1 中国科学技术大学 第四章 串和数组 4.1 串的定义* 4.2 串的表示和实现* 4.3 数组 4.4 数组的压缩

4.1串的定义 串定义 - 字符串,由零个或多个字符组成的有限序列。 S="aoal..an- -串的长度:n -空串:n=O,Null String 子串与主串,子串的位置 一串的比较:最大相等前缀子序列 ADT String{ 数据对象:D={ala∈CharacterSet,.i=l,2,n,n≥0} 数据关系:R={a-1,a∈D,i=2,.n 基本操作 ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 2 中国科学技术大学 4.1串的定义 • 串定义 – 字符串,由零个或多个字符组成的有限序列。 S= “ a0a1 .....an-1 ” – 串的长度:n – 空串:n=0,Null String – 子串与主串,子串的位置 – 串的比较:最大相等前缀子序列 ADT String{ 数据对象:D={ai |aiCharacterSet,i=1,2,…n,n≥0} 数据关系:R={|ai-1 , aiD,i=2,…n} 基本操作:

S StrAssign(&T,chars) strcpy StrCopy(&T,S) strepy StrEmpty(S) strlen(S)==0 StrCompare(S,T) strcmp StrLength(S) strlen ClearString(&S) Concat(&T,S1,S2) strcat Substring(&Sub,S,Pos,len) 0<=pos<=Strlength(S)-1 Index (S,T,pos) 0<=pos<=Strlength(S)-1 strstr Replace(&S,T,V) StrInsert(&S,pos,T) 0<=pos<=Strlength(S) StrDelete(&S,pos,len) 0<=pos<=StrLength(S)-len DestroyString(&S) }ADT String 最小操作子集StrAssign、StrCompare、StrLength、Concat,,Substring ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 3 中国科学技术大学 StrAssign(&T,chars) strcpy StrCopy(&T,S) strcpy StrEmpty(S) strlen(S)==0 StrCompare(S,T) strcmp StrLength(S) strlen ClearString(&S) Concat(&T,S1,S2) strcat Substring(&Sub,S,Pos,len) 0<=pos<=Strlength(S)-1 Index(S,T,pos) 0<=pos<=Strlength(S)-1 strstr Replace(&S,T,V) StrInsert(&S,pos,T) 0<=pos<=Strlength(S) StrDelete(&S,pos,len) 0<=pos<=StrLength(S)-len DestroyString(&S) } ADT String 最小操作子集StrAssign、StrCompare、StrLength、Concat,Substring

4.2串的表示和实现 4.2.1定长顺序存储表示 两种表示方法 -下标为0的数组单元存放长度(pascal) typedef unsigned char SString[MAXSTLEN+1]; -在串值后面加0'结束(C语言) char str[10]; Status Concat(Sstring &T,Sstring S1,Sstring S2) 【注意】T]是否足够长度,溢出处理 void Substring(char Sub[],char S[],int pos,int len) ...Strncpy(Sub,&S[pos],len);Sub[len]=0';... ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 4 中国科学技术大学 4.2串的表示和实现 4.2.1定长顺序存储表示 • 两种表示方法 – 下标为0的数组单元存放长度 (pascal) typedef unsigned char SString[MAXSTLEN+1] ; – 在串值后面加‘\0’结束 (C语言) char str[10]; 算法 Status Concat(Sstring &T,Sstring S1, Sstring S2) 【注意】 T[]是否足够长度,溢出处理 算法 void Substring(char Sub[],char S[], int pos, int len) …Strncpy(Sub,&S[pos],len);Sub[len]=‘\0’; …

4.2.2堆分配存储表示 。 串变量的存储空间是在程序执行过程中动态分配的, 程序中出现的所有串变量可用的存储空间是一个共享 空间,称为“堆”。 typedef struct{ char *ch; int length; Hstring; void StrInsert(HString &S,int pos,HString T) ypb@ustc.edu.cn 5 中国科学技术大学
ypb@ustc.edu.cn 5 中国科学技术大学 4.2.2堆分配存储表示 • 串变量的存储空间是在程序执行过程中动态分配的, 程序中出现的所有串变量可用的存储空间是一个共享 空间,称为“堆” 。 typedef struct{ char *ch; int length; }Hstring; 算法 void StrInsert(HString &S,int pos, HString T)

4.3串的模式匹配算法 BF算法 int Index BF char S []char T[],int pos){ i=pos-1;j=0; while (S[i+j]!=0'&&T[j]!=10') if(S[itj订=T[])j+; else {i++;j=0;) if T[j]=0')return i+1; else return -1;} -例:S="ababcabcacbabi”T-“abcac”返▣值=6 、 算法复杂度:O(m×n)与首字母在$中的出现概率有关 采用SString实现 ypb@ustc.edu.cn 6 中国科学技术大学
ypb@ustc.edu.cn 6 中国科学技术大学 4.3串的模式匹配算法 • BF算法 int Index_BF ( char S [ ], char T [ ], int pos ) { i = pos-1; j = 0; while ( S[i+j] != '\0' && T[j] != '\0' ) { if ( S[i+j] == T[j] ) j ++; else { i ++; j = 0; }} if ( T[j] == '\0' ) return i+1; else return -1;} – 例:S= “ababcabcacbab” T=“abcac” 返回值=6 – 算法复杂度:O(m×n) 与首字母在S中的出现概率有关 – 采用SString实现

匹配模式的改进算法*(KMP算法 0 j1时 next[j]= max{k1模式匹配算法 int Index KMP(SString S,SString T,int pos){ i-pos;j=1; while(iT[O])return i-T[O];else return 0; 一主串指针不回溯。 ypb@ustc.edu.cn 中国科学技术大学
ypb@ustc.edu.cn 7 中国科学技术大学 0 j=1时 next[j]= max{k|1T[0]) return i-T[0]; else return 0; } – 主串指针不回溯。 匹配模式的改进算法*(KMP算法)

>获得next数组的算法 void get next(Sstring T,int &next[]){ i=1;next[1]=0;j=0; while(i改进后获得next数组(nextval)算法 (红色部分改写如下) if(T[i]!=T[j])nextval[i]=j; else nextval[i]=nextval[j]; ypb@ustc.edu.cn 8 中国科学技术大学
ypb@ustc.edu.cn 8 中国科学技术大学 ➢获得next数组的算法 void get_next(Sstring T,int &next[]){ i=1; next[1]=0; j=0; while(i<T[0]){ if(j==0 || T[i]==T[j]){++i; ++j;next[i]=j;} else j=next[j]; } } ➢改进后获得next数组(nextval)算法 (红色部分改写如下) if(T[i]!=T[j])nextval[i]=j; else nextval[i]=nextval[j];

4.3数组 数组的定义 ADT Array{ 数据对象:D={aa2.na2.an∈El emset,. j=0,1,b:-1bi是数组第i维的长度,n是位数} 数据关系:R={R,R2Rn} Riaji...aji.ain,aj...jiin aj1…aji…an,aj1.aitl.an∈D,i=2,3n 0<=jk<=bk-1,1<=k<=n,k!=l 0<=j=b-1} ypb@ustc.edu.cn 9 中国科学技术大学
ypb@ustc.edu.cn 9 中国科学技术大学 4.3数组 数组的定义 ADT Array{ 数据对象:D={aj1 aj2…ajn| aj1 aj2…ajn∈Elemset, ji=0,1,…bi-1,bi是数组第i维的长度,n是位数} 数据关系:R={R1 ,R2…Rn} Ri={| aj1…aji…ajn , aj1…aji+1…ajn ∈D,i=2,3…n 0<=jk<=bk-1,1<=k<=n,k!=I 0<=ji<=bi-1 }

基本操作: initArray(&A,n,bound1,bound2...boundn) DestroyArray(&A) Value(A &e,index1,index2......indexn) Assign(&A,e,index1,index2......indexn) ADT Array ·二维数组定义 一其数据元素是一维数组的线形表 ·N维数组定义 -其数据元素是-1维数组的线形表 ypb@ustc.edu.cn 10 中国科学技术大学
ypb@ustc.edu.cn 10 中国科学技术大学 基本操作 : initArray(&A,n,bound1,bound2...boundn) DestroyArray(&A) Value(A,&e,index1,index2......indexn) Assign(&A,e,index1,index2......indexn) }ADT Array • 二维数组定义 – 其数据元素是一维数组的线形表 • N维数组定义 – 其数据元素是N-1维数组的线形表
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第三章 栈和队列.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第二章 线性表.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(试卷习题)习题集(无答案).pdf
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)二叉平衡树旋转.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)部分排序算法.pdf
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)基本算法和经典问题选讲(主讲:袁平波).pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第7章 查找表.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第8章 排序.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第6章 图.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第5章 二叉树和树.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第1章 数据结构导论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第4章 串和数组.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第3章 栈和队列.pps
- 中国科学技术大学:《数据结构及算法》课程教学资源(PPT课件讲稿)第2章 线性表.pps
- 《数据库基础》课程教学资源(参考资料)数据库在虚拟机CentOS上安装部署openGauss数据库指导手册.pdf
- 《数据库基础》课程教学资源(参考资料)数据库在虚拟机openEuler上安装部署openGauss数据库指导手册(openEuler-openGauss).pdf
- 《数据库基础》课程教学资源(PPT课件讲稿)Delphi 7.0开发示例.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第六章 数据库设计、第七章 关系数据库管理系统实例、第八章 现代数据库技术及进展.pps
- 中国科学技术大学:《数据库基础》课程教学资源(PPT课件讲稿)第五章 数据库的保护.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第五章 数组.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第六章 二叉树和树.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第七章 图.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第十章 排序.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(PPT课件讲稿)第九章 查找表.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第一章 绪论(主讲:袁平波).pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第二章 关系数据库.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第三章 关系数据库标准查询语言SQL.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第四章 关系数据库设计理论.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第五章 数据库的保护.pps
- 中国科学技术大学:《数据结构基础》课程教学资源(PPT课件讲稿)第六章 数据库设计.pps
- 中国科学技术大学:《数据结构与数据库》课程教学资源(试卷习题)数据结构习题(无答案).pdf
- 中国科学技术大学:《数据结构与数据库》课程教学资源(试卷习题)数据库习题(无答案).pdf
- 中国科学技术大学:《数据结构与数据库》课程教学资源(教学大纲,主讲:袁平波).pdf
- 广东茂名农林科技职业学院:跨境电子商务专业人才培养方案(2021级).pdf
- 北方工业大学:电子信息工程专业《程序设计与实践》课程教学大纲.pdf
- 北方工业大学:电子信息工程专业《高级编程语言工程应用》课程教学大纲.pdf
- 北方工业大学:电子信息工程专业《基于MATLAB的信息处理》课程教学大纲.pdf
- 北方工业大学:电子信息工程专业《面向对象程序设计》课程教学大纲.pdf
- 北方工业大学:电子信息工程专业《网络信息安全技术》课程教学大纲.pdf