数据结构串和数组精品文稿.ppt
《数据结构串和数组精品文稿.ppt》由会员分享,可在线阅读,更多相关《数据结构串和数组精品文稿.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构串和数组第1页,本讲稿共63页l串串(String)是是由由零零个个或或多多个个字字符符组组成成的的有有限限序序列列。一一般记为般记为:S=a1 a2.an(n0)l其其中中,S是是串串的的名名,用用单单引引号号括括起起来来的的字字符符序序列列是是串串的的值值;ai(1in)可可以以是是字字母母、数数字字或或其其它它字字符符,串串中中字字符的数目符的数目n称为串的长度。称为串的长度。ln=0的串称为的串称为空串空串(null string)。3.6.1 串的定串的定义义和串的存和串的存储储方式方式概念概念第2页,本讲稿共63页串串中中任任意意个个连连续续的的字字符符组组成成的的子子序序
2、列列称称为为该该串串的的子串子串。包含子串的串相包含子串的串相应应地称地称为为主串主串。通通常常称称字字符符在在序序列列中中的的序序号号为为该该字字符符在在串串中中的的位位置。置。子子串串在在主主串串中中的的位位置置则则以以子子串串的的第第一一个个字字符符在在主串中的位置来表示。主串中的位置来表示。当当两两个个串串的的长长度度相相等等,并并且且各各个个对对应应位位置置上上的的字字符符都相等时,称都相等时,称两个串相等两个串相等。3.6.1 串的定串的定义义和串的存和串的存储储方式方式概念概念第3页,本讲稿共63页l例:串名例:串名为为A、B、C、D的四个串如下:的四个串如下:l A=very
3、good;长长度度为为9,是,是D的主串;的主串;l B=;长长度度为为3;l C=;长长度度为为0(空串);(空串);l D=good;长长度度为为4,是,是A的子串。的子串。lD在在A中的位置是中的位置是6。3.6.1 串的定串的定义义和串的存和串的存储储方式方式概念概念第4页,本讲稿共63页l(1)赋值操作:赋值操作:StrAssign(S,chars)初始条件:初始条件:chars是字符串常量;是字符串常量;操作结果:生成一个值等于操作结果:生成一个值等于chars的字符串的字符串S;l(2)插入操作:插入操作:StrInsert(S,pos,T)初始条件:字符串初始条件:字符串S、T
4、存在,存在,1pos StrLength(S)+1;操作结果:在字符串操作结果:在字符串S的第的第pos个字符之前插入串个字符之前插入串T。3.6.1 串的定串的定义义和串的存和串的存储储方式方式基本操作基本操作第5页,本讲稿共63页(3)删删除操作:除操作:StrDelete(S,pos,len)初始条件:字符串初始条件:字符串S存在,存在,1pos StrLength(S)-len+1;操操作作结结果果:从从字字符符串串S中中删删除除第第pos个个字字符符起起长长度度为为len的子串。的子串。(4)复制操作:复制操作:StrCopy(S,T)初始条件:字符串初始条件:字符串S存在;存在;操
5、作操作结结果:将字符串果:将字符串S的内容复制到串的内容复制到串T。3.6.1 串的定串的定义义和串的存和串的存储储方式方式基本操作基本操作第6页,本讲稿共63页l(5)判空操作:判空操作:StrEmpty(S)初始条件:字符串初始条件:字符串S存在;存在;操操作作结结果果:若若S为为空空串串,则则返返回回TRUE,否否则则返返回回FALSE。l(6)比比较较操作:操作:StrCompare(S,T)初始条件:字符串初始条件:字符串S、T存在;存在;操操作作结结果果:若若ST,则则返返回回值值0;若若S=T,则则返回返回值值=0;若;若ST,则则返回返回值值Maxlen,且,且pos+LCMa
6、xlen,且,且pos+LCMaxlen;3.6.2 定定长顺长顺序串运算序串运算插入算法分析插入算法分析第13页,本讲稿共63页/*在串在串s中序号为中序号为pos的字符之前插入串的字符之前插入串t*/int StrInsert(SString*s,int pos,SString t)int i;if(poss-len)return(0);/*插入位置不合法插入位置不合法*/if(s-len+t.lenlen+t.len-1;i=t.len+pos;i-)s-chi=s-chi-t.len;for(i=0;ichi+pos=t.chi;s-len=s-len+t.len;3.6.2 定定长顺
7、长顺序串运算序串运算插入算法插入算法实现实现第14页,本讲稿共63页 else if(pos+t.lenMaxlen,但串但串t的字符序列可以全部插入的字符序列可以全部插入*/for(i=Maxlen-1;i=t.len+pos;i-)s-chi=s-chi-t.len;for(i=0;ichi+pos=t.chi;s-len=Maxlen;else /*串串t的部分字符序列要舍弃的部分字符序列要舍弃*/for(i=0;ichi+pos=t.chi;s-len=Maxlen;return(1);3.6.2 定定长顺长顺序串运算序串运算插入算法插入算法实现实现第15页,本讲稿共63页int St
8、rDelete(SString*s,int pos,int len)if(pos(s-len-len)return(0);for(i=pos+len;ilen;i+)s-chi-len=s-chi;s-len=s-len-len;return(1);3.6.2 定定长顺长顺序串运算序串运算删删除算法除算法实现实现第16页,本讲稿共63页在进行串的连接时:在进行串的连接时:假设原字符串为假设原字符串为A,长度为,长度为LA;待连接串假设为待连接串假设为B,其长度为,其长度为LB;连接过程可能出现下列三种情况:连接过程可能出现下列三种情况:1)连接后串的总长度为连接后串的总长度为LA+LB Max
9、len;2)连接后串的总长度连接后串的总长度Maxlen,且,且LAMaxlen,LA=Maxlen;3.6.2 定定长顺长顺序串运算序串运算连连接算法分析接算法分析第17页,本讲稿共63页/*将串将串t连接在串连接在串s的后面的后面*/int StrCat(SString*s,SString t)int i,flag;if(s-len+t.lenlen;ilen+t.len;i+)s-chi=t.chi-s-len;s-len=s-len+t.len;flag=1;3.6.2 定定长顺长顺序串运算序串运算连连接算法接算法实现实现第18页,本讲稿共63页 else if(s-lenMaxlen
10、,但串但串s的长度的长度len;ichi=t.chi-s-len;s-len=Maxlen;flag=0;else flag=0;/*串串s的长度的长度=Maxlen,串,串t不被连接不被连接*/return(flag);3.6.2 定定长顺长顺序串运算序串运算连连接算法接算法实现实现第19页,本讲稿共63页数数组组(array)可可看看成成是是线线性性表表的的推推广广,是是最最常常用用的的数数据据结结构之一。构之一。数数组组是有限个数是有限个数组组元素的集合,元素数目固定;元素的集合,元素数目固定;数数组组的的每每个个元元素素与与一一组组下下标标相相对对应应,数数组组元元素素的的下下标标关系
11、具有上下界的关系具有上下界的约约束且下束且下标标有序;有序;数数组组中所有数中所有数组组元素的数据元素的数据类类型必型必须须一致;一致;数数组组的两种基本运算:的两种基本运算:1.给给定下定下标标,存取相,存取相应应的数据元素;的数据元素;2.给给定下定下标标,修改相,修改相应应的数据元素。的数据元素。3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式定定义义第20页,本讲稿共63页一个一个m行行n列的二列的二维维数数组组(也称也称为为矩矩阵阵),记记作作Am,n。3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式定定义义A=a11 a12 .a1n a21
12、 a22 .a2n am1 am2 .amn 第21页,本讲稿共63页按行按行优优先先顺顺序存序存储储对对于于上上述述二二维维数数组组A而而言言,可可以以将将其其看看成成是是由由m个个行行向量向量组组成的向量,即:成的向量,即:Amn=(a11,.,a1n),(a21,.,a2n),.,(am1,.,amn)这这种行向量表相当于一个种行向量表相当于一个线线性表。性表。行行优优先先顺顺序序存存储储就就是是数数组组元元素素按按行行向向量量表表次次序序进进行行存存储储,即第,即第i+1个行表个行表紧紧跟在第跟在第i个行表后面个行表后面进进行存行存储储。3.6.3 二二维维数数组组的的结结构特点和存构
13、特点和存储储方式方式存存储结储结构构第22页,本讲稿共63页当当把把n维维数数组组的的元元素素按按行行优优先先顺顺序序地地存存放放在在存存储储器器里里,则则每每个个元元素素的的存存储储地地址址可可以以用用公公式式计计算算出出来来。这这个个计计算公式称算公式称为为“地址公式地址公式”。假假设设每每个个数数据据元元素素占占c个个存存储储单单元元,则则上上述述二二维维数数组组Amn的地址公式的地址公式为为:Loc(aij)=Loc(a11)+(i-1)*n+(j-1)*c(1im,1jn)3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式存存储结储结构构第23页,本讲稿共63页按列
14、按列优优先先顺顺序存序存储储对对于于上上述述二二维维数数组组A而而言言,也也可可以以将将其其看看成成是是由由n个个列向量列向量组组成的向量,即:成的向量,即:Amn=(a11,.,am1),(a12,.,am2),.,(a1n,.,amn)这这种列向量表也相当于一个种列向量表也相当于一个线线性表。性表。列列优优先先顺顺序序存存储储就就是是数数组组元元素素按按列列向向量量表表次次序序进进行行存存储储,即第,即第i+1个列表个列表紧紧跟在第跟在第i个列表后面个列表后面进进行存行存储储。3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式存存储结储结构构第24页,本讲稿共63页当当把
15、把n维维数数组组的的元元素素按按列列优优先先顺顺序序地地存存放放在在存存储储器器里里,并并假假设设每每个个数数据据元元素素占占c个个存存储储单单元元,则则上上述述二二维维数数组组Amn的地址公式的地址公式为为:Loc(aij)=Loc(a11)+(j-1)*m+(i-1)*c(1im,1jn)3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式存存储结储结构构第25页,本讲稿共63页根根据据二二维维数数组组的的特特性性可可以以推推出出:一一个个三三维维数数组组可可以以用用其其数数据据元元素素为为二二维维数数组组的的线线性性表表来来定定义义;依依次次类类推推,n维维数数组组是是由
16、由数数据据元元素素为为n-1维维数数组组的的线线性表构成。性表构成。因因此此,对对n维维数数组组也也有有上上述述两两种种不不同同顺顺序序分分配配的的存存储储结结构构。当当把把n维维数数组组的的元元素素这这样样顺顺序序地地存存放放在在存存储储器器里里,则则每每个个元元素素的的存存储储地地址址都都可可以以用用“地址公式地址公式”计计算出来。算出来。3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式存存储结储结构构第26页,本讲稿共63页在在C语语言言中中,可可以以把把一一个个二二维维数数组组看看作作是是一一种种特特殊殊的的一一维维数数组组,该该一一维维数数组组的的元元素素又又是是
17、一一个个一一维维数数组组。例例如如定定义义:int a34;其其中中,可可以以把把a看看作作是是一一个个一一维维数数组组,它它有有3个个元元素素:a0、a1、a2,每每个个元元素素又又是是一一个个包包含含4个个元元素素的一的一维维数数组组。3.6.3 二二维维数数组组的的结结构特点和存构特点和存储储方式方式示例示例第27页,本讲稿共63页通通常常在在实实际际计计算算中中经经常常出出现现一一些些阶阶数数很很高高的的矩矩阵阵,且矩阵中有许多值相同的元素或者零元素。且矩阵中有许多值相同的元素或者零元素。为了节省存储空间,可以对这类矩阵进行压缩存储。为了节省存储空间,可以对这类矩阵进行压缩存储。所所谓
18、谓压压缩缩存存储储是是指指:为为多多个个值值相相同同的的元元素素只只分分配配一一个存储空间;对零元素不分配空间。个存储空间;对零元素不分配空间。3.6.3 二二维维数数组组的的结结构特点构特点特殊矩特殊矩阵阵的存的存储储方式方式第28页,本讲稿共63页下三角矩下三角矩阵阵的存的存储储方式:方式:设设下三角矩下三角矩阵为阵为Ann,满满足:足:3.6.3 二二维维数数组组的的结结构特点构特点特殊矩特殊矩阵阵的存的存储储方式方式A=a11 0 0 a21 a22 0 an1 an2 ann 第29页,本讲稿共63页若将其中的非零元素按行若将其中的非零元素按行优优先先顺顺序存放序存放为为:则则一一维
19、维数数组组Sak和和矩矩阵阵元元素素aij之之间间存存在在着着一一一一对对应应关系:关系:(1ji n)3.6.3 二二维维数数组组的的结结构特点构特点特殊矩特殊矩阵阵的存的存储储方式方式k=+j第30页,本讲稿共63页l假假设设每每个个数数据据元元素素占占用用一一个个字字节节的的存存储储单单元元,则则下下三三角角矩阵的地址公式为:矩阵的地址公式为:3.6.3 二二维维数数组组的的结结构特点构特点特殊矩特殊矩阵阵的存的存储储方式方式Loc(aij)=Loc(a11)+i(i1)/2+(j1)第31页,本讲稿共63页三三对对角矩角矩阵阵的存的存储储方式:方式:设设三三对对角矩角矩阵为阵为Ann,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 数组 精品 文稿
限制150内