void replace(String&S, String T, String V) neStrLength(S); m=StrEngth (T); pos=1; StrAssign(news, NullStr); i1; while( pos <=n-m+1&&i( j=Index(s, T, pos); f(l=0) SubString(subS,pos,ipos);∥不置换子串 Concat(news, sub, v) pos =I+m; SubString(sub,S,pos,mpos+1;∥剩余串 Concat(s, news, sub )
void replace(String& S, String T, String V) { } while ( pos <= n-m+1 && i) { i=Index(S, T, pos); if (i!=0) { SubString(sub, S, pos, i-pos); // 不置换子串 Concat(news, sub, V); pos = i+m; } } SubString(sub, S, pos, n-pos+1); // 剩余串 Concat( S, news, sub ); n=StrLength(S); m=StrLength(T); pos = 1; StrAssign(news, NullStr); i=1;
串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束 为字符集。 串的基本操作和线性表有很大差别。 在线性表的基本操作中,大多以单个元素作为操作对象 在串的基本操作中,通常以串的整体作为操作对象。 串的整体操作 赋值 Strassen(S,“ Data Structure”) 复制 StrCopy(I,S)∥T<S,T为“ Data structure” 匕较 StrCompar(S,T 连接 Concat(T,“"Data”,“ Structure”)/T为" DataStructure 取子串 SubString(sub,S,2,5)∥sub为"ataS” 子串在主串中的定位ndex(S,“a”,3)∥4 子串置换 Replace(S,“a”,"“b”)∥/S为“ Btb structure” 子串插入 Str Insert(S,3,“aha”)∥“ Daahata structure” 子串删除 StrDelete(S,3,5)∥“ Daructure
串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束 为字符集。 串的基本操作和线性表有很大差别。 在线性表的基本操作中,大多以单个元素作为操作对象; 在串的基本操作中,通常以串的整体作为操作对象。 • 串的整体操作 – 赋值 StrAssign(S, “Data Structure”) – 复制 StrCopy(T, S) // T<=S, T为“Data Structure” – 比较 StrCompare(S, T) – 连接 Concat(T, “Data”, “Structure”) //T为“DataStructure” – 取子串 SubString(sub, S, 2, 5) // sub为“ata S” – 子串在主串中的定位 Index(S, “a”, 3) // 4 – 子串置换 Replace(S, “a”, “b”) // S为“Dbtb Structure” – 子串插入 StrInsert(S, 3, “aha”) // “Daahata Structure” – 子串删除 StrDelete(S, 3, 5) // “Daructure
练习:设s= AMA STUDENT,t=GOOD q= WORKER’。求: Strength(s) 14 Strength(t Substring(s, 8, 7) 'STUDENTS SubString(t, 2, 1= IndeX(s,'a) 3 Index(s,t)=0(s中没有t!) Replace(s, STUDENT’,q=’ IAMA WORKER Fa: Concat(SubString(s, 6, 2), Concat( SubString(s, 7, 8))=?
设 s =’I AM A STUDENT’, t =’GOOD’, q=’WORKER’。求: 练习: StrLength(s) = StrLength(t) = SubString(s, 8, 7)= SubString(t, 2, 1)= Index(s, ‘A’)= Index(s, t)= Replace(s, ‘STUDENT’,q)= 14 4 ‘STUDENT’ ‘O’ 3 0 ( s中没有t!) ’I AM A WORKER’ 再问:Concat(SubString(s,6,2), Concat(t,SubString(s,7,8))) =?
5.9串的毫暴和实现 串的长顺感存储录 串的罐分正亭储表 三、串的链存储表悬
一、串的定长顺序存储表示 二、串的堆分配存储表示 三、串的块链存储表示 5.2 串的表示和实现
5.g串的实观 首先强调:串与线性表的运算有所不同,是以“串的整 体”作为操作对象,例如查找某子串,在主串某位置上 插入一个子串等。 串有三种机内表示方法: ·定长顺序存储表示用一组地址连续的 存储单元存储串值的字符序列 顺序 存储雄分配存储表示用一组地址连续的存 储单元存储串值的字符序列但存储空间 是在程序执行过程中动态分配而得 菇串的块链存储表示链式方式存储
5.2串的表示和实现 •定长顺序存储表示——用一组地址连续的 存储单元存储串值的字符序列 •堆分配存储表示——用一组地址连续的存 储单元存储串值的字符序列,但存储空间 是在程序执行过程中动态分配而得。 •串的块链存储表示——链式方式存储 首先强调:串与线性表的运算有所不同,是以“串的整 体”作为操作对象,例如查找某子串,在主串某位置上 插入一个子串等。 串有三种机内表示方法: 顺序 存储 链式 存储