数据结构 第4章ppt

合集下载

数据结构——第4章 串(C#)

数据结构——第4章 串(C#)
将当前链串的所有结点?nstr将q结点插入到尾部将q结点插入到尾部将链串t的所有结点?nstr将q结点插入到尾部尾结点的next置为null返回新建的链串5求子串substrij返回当前串中从第i个字符开始的连续j个字符组成的子串ຫໍສະໝຸດ 第4章 串4.1 串的基本概念
4.1.1 什么是串 串(或字符串)是由零个或多个字符组成的有限序列。 记作str="a1a2…an"(n≥0),其中str是串名,用双引号括 起来的字符序列为串值,引号是界限符,ai(1≤i≤n)是一 个任意字符(字母、数字或其他字符),它称为串的元素, 是构成串的基本单位,串中所包含的字符个数n称为串的 长度,当n=0时,称为空串。
4.2 串的存储结构
4.2.1 串的顺序存储结构-顺序串
和顺序表一样,用一个data数组(大小为MaxSize)和 一个整型变量length来表示一个顺序串,length表示data数 组中实际字符的个数。 定义顺序串类SqStringClass如下:
class SqStringClass { const int MaxSize=100; public char[] data; //存放串中字符 public int length; //存放串长 public SqStringClass() //构造函数,用于顺序串的初始化 { data=new char[MaxSize]; length=0; } //顺序串的基本运算 }
(9)串输出DispStr() 将当前串s的所有字符构成一个字符串并输出。对应的算 法如下:
public string DispStr() { int i; string mystr=""; if (length==0) mystr = "空串"; else { for (i=0;i<length;i++) mystr+=data[i].ToString(); } return mystr; }

数据结构 第4章 矩阵乘法

数据结构 第4章 矩阵乘法

用经典算法。
α11 A α21
α31
α12 α22 α32
α13 α23 α33
α14
α24
B
α34
b11 b21 b31 b41
b12 b22 b32 b42
b13
b23
b33
Q
b43
A*B
c11 c21 c31
c12 c22 c32
c13
c23
c33
4
cij aik bkj ai1b1 j ai2b2 j ai3b3 j ai4b4 j , i 1,2,3, j 1,2,3
ci1 ai1b11 ai2b21 ai3b31 ai4b41 ci2 ai1b12 ai2b22 ai3b32 ai4b42 ci3 ai1b13 ai2b23 ai3b33 ai4b43
注意:对任意k=1,2,3,4,乘 积项aikbkj 必是且只能是cij求 和公式中的一项, 故可改变 计算aikbkj 的次序。
b23
b33 b43
C
A*B
c11 c21
c31
c12 c22 c32
c13
c23
c33
cij aik bkj ai1b1 j ai2b2 j ai3b3 j ai4b4 j , i 1,2,3, j 1,2,3
k 1
经典算法中乘积项aikbkj计算次序
ci1 ai1b11 ai2b21 ai3b31 ai4b41 ci2 ai1b12 ai2b22 ai3b32 ai4b42
b12 b22 b32 b42
b13
b23
C
b33
b43
A*B
c11 c21 c31

数据结构第4章 串

数据结构第4章  串
ring s, SString t)
/*若串s和t相等则返回0;若s>t则返回正数;若s<t则返 回负数*/
{ int i;
for (i=0;i<s.len&&i<t.len;i++)
if (s.ch[i]!=t.ch[i]) return(s.ch[i] - t.ch[i]);
初 始 条 件 : 串 S 存 在 ,1≤pos≤StrLength(S) 且 1≤len≤StrLength(S)-pos+1
操作结果:用Sub返回串S的第pos个字符起长度为len的子串
返回主目录
(11)StrIndex(S,T,pos)
初始条件: 串S和T存在,T是非空串, 1≤pos≤StrLength(S)
return(s.len); }
返回主目录
(7)清空函数
StrClear(SString *s) /*将串s置为空串*/ {
s->len=0; }
返回主目录
(8)连接函数
(1) 连接后串长≤MAXLEN,则直接将B加在A的 后面。 (2) 连接后串长>MAXLEN且LA<MAXLEN,则B 会有部分字符被舍弃。 (3) 连接后串长>MAXLEN且LA=MAXLEN,则B 的全部字符被舍弃(不需连接)。
for (i=s->len + t.len-1;i>=t.len + pos;i--)
s->ch[i]=s->ch[i-t.len];
for (i=0;i<t.len;i++) s->ch[i+pos]=t.ch[i];
s->len=s->len+t.len;

数据结构第4章数组和串

数据结构第4章数组和串
1
● 教学目的:理解抽象数据类型数组的概念, 掌握数组的不同存储结构的实现及应用,了 解广义表的相关概念,掌握串的逻辑结构、 存储结构及其基本运算。
● 教学重点:数作在不同 存储结构上的实现。 ● 教学难点:带状矩阵的压缩存储;稀疏矩 阵的三元组表实现及其转置算法,堆结构的 串操作实现;串的模式匹配算法。
矩阵的压缩存储
printf("Array a:\n"); k=0; for(i=0;i<N;i++)//输出矩阵A { for(j=0;j<N;j++) if(i<j)printf("%5d",sa[M-1]); else printf("%5d",sa[i*(i+1)/2+j]); printf("\n"); } printf("Array b:\n"); k=0; for(i=0;i<N;i++)//输出矩阵B { for(j=0;j<N;j++) if(i>j)printf("%5d",sb[M-1]); else printf("%5d",sb[j*(j+1)/2+i]); printf("\n"); }}
矩阵的压缩存储
由此可见,要唯一表示一个稀疏矩阵,在存储三 元组表的同时还需存储该矩阵总的行数、列数及非 零元个数。 练习:写出图4-9(a)所示稀疏矩阵的三元组表。
三元组表(也是线性表)的存储方式主要有两种: 顺序存储和链式存储,从而可引出稀疏矩阵的两种 压缩存储方法:三元组顺序表和十字链表。 3、三元组顺序表
矩阵的压缩存储

数据结构-第4章 串

数据结构-第4章 串
真子串是指不包含自身的所有子串。
4.1 串的类型定义
子串的序号:将子串在主串中首次出现时的该 子串的首字符对应在主串中的序号,称为子串 在主串中的序号(或位置)。 【例】 A=“abcdefbbcd”,B=“bcd”,B在A中的 序号为2。 特别地,空串是任意串的子串,任意串是其自 身的子串。
4.1.2 串的抽象数据类型定义
//查找ab子串
if (p->data==‘ a’ && p->next->data==‘b’)
{ p->data=‘x’; p->next->data=‘z’;
q=(LinkStrNode *)malloc(sizeof(LinkStrNode));
q->data=‘y’;
q->next=p->next; p->next=q;
s: a a a a b c d
t: a ab bac acb bc c ✓ 匹配成功 算法的思路是从s的每一个字符开始依次与t的 字符进行匹配。
4.2.1 Brute-Force算法
int BFIndex(SqString s,SqString t)
{ int i=0, j=0,k;
while (i<s.length && j<t.length)
4.1 串的类型定义 4.2 串的表示和实现 4.3 串的模式匹配算法
本章要求
理解: 1、串的基本概念、类型定义 2、串的存储表示和实现 3、串的KMP算法
掌握: 4、串的简单模式匹配算法(BF)
第4章 串的基本概念
串(或字符串):是由零个或多个字符组成 的有限序列。
串的逻辑表示: S=“a1a2…ai…an”,其中S为 串名,ai (1≤i≤n)代表单个字符,可以是字母、 数字或其它字符(包括空白符)。 串值:双引号括起来的字符序列。双引号不是 串的内容,只起标识作用。

数据结构第四章串

数据结构第四章串

(2) 置换操作:用联接算法来实现。用在求子串序号(a,b,h)中得到的 ind 将a分成3部分:第一部分是b在a中的第一个位置前的子串substr (a,1,ind-1);第二部分是b(以c来代替);第三部分是b在a中的最后一个 位置后的子串substr(a,ind+m,n)。 即 a substr(a,I,ind-1)||c||substr(a,ind+m,n)
4. 2 串的基本运算
对于串的基本操作,许多高级语言均提供了相应的运算或标准 库函数来实现。下面仅介绍几种常用的串运算。 (1)联接(concatenation) 联接是串的最基本,最重要的运算。两个串的联接是将一个串 紧接着放在另一个串的末尾。联接用符号“||”表示。 例如:a=”bei” b=“jing” a || b=“beijing” (2)求子串(substr) SUBSTR(a,m,n)功能: 从a 中截取子串,从第m个字符到第n个 字符的子串(m<n)。子串应是将串a中取出从标号m开始的连续n -m+1个字符。 例:SUBSTR(“ABCDEFG”,2,3)=”BC” 利用求子串及联接两种运算可以完成对串的插入、删除和修改。 例如: a=“bejing” b=“iy” ,将b插入到a的第二个字符之后 得到新的串s,则 s=substr(a,1,2) || b || substr(a,3,6) =“beiyjing”
(5)置换(repleace) 置换运算repleace(a,b,c)表示在a中搜索b,若b是a的 子串,就以c代替b,若不是,则经置换后,a不变。 例如:a=“monday”, b=“mon”, c=“thurs” repleace(a,b,c)=“thursday” 置换运算是将串a中所有的子串b用c来代替。 在一部分程序设计语言中没有实现,仍可用前三种运 算来完成。 置换算法过程:实现置换运算repleace(a,b,c),同 样也是在a中搜索是否与b相同的子串,若有,以c来代 替,再继续向下搜,直到在a中找不到和b相同的子串 为止。

数据结构第四章:串


例2、串的定位 、串的定位index(s,t,pos)
在主串s中取从第 个字符起、 相等的子串和T比较 在主串 中取从第pos个字符起、长度和串 相等的子串和 比较,若 中取从第 个字符起 长度和串T相等的子串和 比较, 相等,则求得函数值为i,否则值增1直至 中不存在和串T相等的子串 直至S中不存在和串 相等,则求得函数值为 ,否则值增 直至 中不存在和串 相等的子串 为止。 为止。
}
4.2 串的表示和实现
首先强调:串与线性表的运算有所不同,是以“串的整体” 首先强调:串与线性表的运算有所不同,是以“串的整体”作 为操作对象,例如查找某子串, 为操作对象,例如查找某子串,在主串某位置上插入一个子串 等。 串有三种机内表示方法: 串有三种机内表示方法:
定长顺序存储表示
顺序 存储 ——用一组地址连续的存储单元存储串值的字 用一组地址连续的存储单元存储串值的字 符序列, 静态存储方式 方式。 符序列,属静态存储方式。
4.1 串类型的定义 4.2 串的表示和实现
4.1 串的类型定义
4.1.1串的定义
定义:串(string)是由零个或多个任意字符组成的字 符序列,是数据元素为单个字符的特殊线性表。 的特殊线性表。 是数据元素为单个字符的特殊线性表 记为:an”
(n≥0 )
第4章 串(String) 章 )
本章主题:串的各种基本运算及其实现 本章主题: 教学目的:了解数据结构的基本概念, 教学目的:了解数据结构的基本概念,理解常用术语 教学重点: 教学重点: 掌握串的基本概念及其基本运算 掌握串的存储结构 主要内容: 主要内容: 1.串的基本概念 2.串的存储结构 2.串的存储结构 3.串的基本运算及其实现 3.串的基本运算及其实现
串其中0<=pos<=strlen(s)-1,且数组 且数组sub至少可容纳 至少可容纳len+1个字符。*/ 个字符。 串其中 且数组 至少可容纳 个字符

第四章空间数据结构


基本概念
• 弧段:构成多边形的线称为弧段,每个弧段可以有许 多中间点。
• 节点:两条以上弧段相交的点称为节点 • 岛:由一条弧段组成的多边形称为岛或洞。 • 简单多边形:多边形图中不含岛的多边形称为简单多
边形。 • 复合多边形:含岛的多边形称为复合多边形,包括为
边界和内边界,岛可以看做复合多边形的内边界。
C1,C5,C4
P3
C6,C7,C8
P4
C5,C7,C10,C2
….
节点 N1 N2 N3 N4 ….
C4
N4 N1
C1 P2 C6
C8
P1 C3
P3 N2 C5 N5
C2
C7
N7
C9 P5 P4
N3
N6
C10
点拓扑
坐标
X1,y1
X2,y2
X3,y3
X4,y4
线
C1,C4,C3 C1,C5,C2 C2,C3,C10 C4,C6,C8
线与多边形之间的树状索引
点与多边形之间的树状索引
树状索引编码消除了相邻多边形边界的数据冗 余和不一致的问题,在简化过于复杂的边界线或合并 相邻多边形时可不必改造索引表,邻域信息和岛状信 息可以通过对多边形文件的线索引处理得到,但是比 较繁琐,因而给相邻函数运算,消除无用边,处理岛 状信息以及检查拓扑关系带来一定的困难,而且两个 编码表都需要以人工方式建立,工作量大且容易出错 。
矢量数据结构
矢量数据结构是对矢量数据模型进行数据的 组织,通过记录坐标的方式尽可能精确地表示点、 线、多边形等地理实体,坐标空间设为连续,允 许任意位置、长度和面积的精确定义。
其精度仅受数字化设备的精度和数值记录字 长的限制。
矢量数据

《数据结构》课件


第二章 线性表
1
线性表的顺序存储结构
2
线性表的顺序存储结构使用数组来存储元素,
可以快速随机访问元素。
3
线性表的常见操作
4
线性表支持常见的操作,包括插入、删除、 查找等,可以灵活地操作其中的元素。
线性表的定义和实现
线性表是一种数据结构,它包含一组有序的 元素,可以通过数组和链表来实现。
线性表的链式存储结构
线性表的链式存储结构使用链表来存储元素, 支持动态扩展和插入删除操作。
第三章 栈与队列
栈的定义和实现
栈是一种特殊的线性表,只能在一 端进行插入和删除操作,遵循后进 先出的原则。
队列的定义和实现
队列是一种特殊的线性表,只能在 一端进行插入操作,在另一端进行 删除操作,遵循先进先出的原则。
栈和队列的应用场景和操作
哈希表是一种高效的查找数据结构, 通过哈希函数将关键字映射到数组 中,实现快速查找。
排序算法包括冒泡排序、插入排序 和快速排序等,可以根据数据规模 和性能要求选择合适的算法。
结语
数据结构的学习心得 总结
学习数据结构需要掌握基本概念 和常见操作,通过实践和练习加 深理解和熟练度。
下一步学习计划的安 排
在掌握基本数据结构的基础上, 可以进一步学习高级数据结构和 算法,提升编程技能。
相关学习资源推荐
推荐一些经典的数据结构教材和 在线学习资源,如《算法导论》 和LeetCode等。
栈和队列在计算机科学中有许多应 用,如函数调用、表达式求值和作 业调度等。
第四章 树与二叉树
树的定义和性质
树是由节点和边组成的一种非线性数据结构,每个 节点可以有多个子节点。
二叉树的遍历方式
二叉树的遍历方式包括前序遍历、中序遍历和后序 遍历,可以按不同顺序输出节点的值。

数据结构严蔚敏(全部章节814张PPT)-(课件)

① 集合:结构中的数据元素除了“同属于一个集合” 外,没有其它关系。
② 线性结构:结构中的数据元素之间存在一对一的 关系。
③ 树型结构:结构中的数据元素之间存在一对多的 关系。
④ 图状结构或网状结构:结构中的数据元素之间存 在多对多的关系。
图1-3 四类基本结构图
1.1.3 数据结构的形式定义
数据结构的形式定义是一个二元组: Data-Structure=(D,S)
计算机求解问题的一般步骤
编写解决实际问题的程序的一般过程:
– 如何用数据形式描述问题?—即由问题抽象出一个 适当的数学模型; – 问题所涉及的数据量大小及数据之间的关系; – 如何在计算机中存储数据及体现数据之间的关系? – 处理问题时需要对数据作何种运算? – 所编写的程序的性能是否良好? 上面所列举的问题基本上由数据结构这门课程来回答。
其中:D是数据元素的有限集,S是D上关系的有限集。 例2:设数据逻辑结构B=(K,R)
K={k1, k2, …, k9} R={ <k1, k3>,<k1, k8>,<k2, k3>,<k2, k4>,<k2, k5>,<k3, k9>, <k5, k6>,<k8, k9>,<k9, k7>,<k4, k7>,<k4, k6> } 画出这逻辑结构的图示,并确定那些是起点,那些是终点
<基本操作名>(<参数表>) 初始条件: <初始条件描述> 操作结果: <操作结果描述>
– 初始条件:描述操作执行之前数据结构和参数应 满足的条件;若不满足,则操作失败,返回相应的出 错信息。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4张 串
2) 字符串的联接 strcat(string1,string2) 将 源 串 string2 的 值 联 接 到 目 标 串 string1的尾部, 返回指向string1的指针。此时string1的值为两个 字符串的联接值。 例: string1为′fgh′ , string2为′jkl′, 经过 联接运算后, srting1的值为′fghjkl′。字符串联接函数可用如下 形式说明: char * strcat(string1, string2) char * string1; char * string2;
第4张 串
7) 字符串的删除 通过字符串的删除操作, 可以在字符串string1中第i个字符 后删除由j个字符组成的字符串string2。字符串删除操作中, 先 要进行串匹配, string1包含string2则进行删除;否则不进行。串 匹配运算将在下面详细介绍。这里假设string1中含string2, 则 删除算法如下: : 算法4.2 /* (abcdefgh′ , ′abcgh′ ,i=3, j=3 */ /* 初态 结果 */
第4张 串
例: 设某系统的一个存储单元可以存放4个字符, 则对于字 串(This is a flag), 连同该串长度14, 共需4个存储单元, 存放的直 观表示如表 4.1 所示。 在紧缩存放格式中, 字符串的长度是显 式的, 虽然它占用了额外的存储空间, 但总的来说, 存储利用率 还是高的。 2) 非紧缩格式 非紧缩格式是以一个存储单元为单位, 也就是一个存储单 元中仅放一个字符。 在一个程序中使用的串变量较少, 且各串 变量的长度又都较短时,如果希望该程序处理字符的速度尽 可能快, 那么选择非紧缩格式比较合适。 在这种存储格式中, 串的长度是隐式的, 串所占用存储单元的个数即为串长。
第4张 串
4) 子串的查询 strstr(string1,string2)找出要查询的子串string2在被查询的 主串string1中首次出现的位置, 并返回该指针。若在string1中 未找到string2, 则返回值为NULL。子串查询函数可用如下形 式说明: char * strstr(string1, string2) char * string1; char * string2;
第4张 串
struct list struct list * next; /* 指向下一个结点的指针 */ char data; /* 字符 */
} * point; /* point为结构类型的指针, 指向第一结点 */ 根据上述说明, 字符串′string′的链表存储可用图4.1表示。 如果链表中每个结点可存放4个字符, 则结点结构为: struct list struct list * next; char data[4]; /* 在一个结点中可放4个字符 */ } * point; 根据上述说明, 字符串′string′的链表存储可用图4.2表示。
第4张 串
3) 两个字符串的比较 strcmp(string1,string2) 比 较 两 个 字 符 串 。 若 string1 等 于 string2, 返回值为′0′; 若string1大于string2, 返回值为正数; 若 string1小于string2, 返回值为负数。两个字符串比较函数可用如 下形式说明: int strcmp(string1, string2) char * string1; char * string2;
第4张 串
第4张 串
若符号表的每一行包含有串名和串值的始、 尾地址, 如表 4.3(a)所示, 则任意一个串的长度等于尾地址与始地址之差加1。 当然也可以直接将串的长度值存放到符号表中, 这时不必设立 尾指针, 如表4.3(b)所示, 而串值的存储方式如图4.3所示。 对于链表存储串值的存储方式, 若要建立串变量的符号表, 则只要存入一个链表的表头指针就可以了。
第4张 串
4.2.2 串的链表存储
由于各种串运算与串的存储方式有密切关系, 若要随机存 取串中第K个字符, 顺序存储显得比较方便; 若要对串进行插入、 删除等操作, 顺序存储就显得比较繁琐, 而链表存储则显示出 明显的优越性。 链表存储是把可利用的存储空间分成一系列大小相同的 结点(若干连续的存储单元), 每个结点含有两个域: data域和 next域。 data域用来存放字符; next域用来存放指向下一个结点 (首地址)的指针。 结点的大小是指data域中可以存放字符的个 数, next域的大小则取决于寻址的范围。 例如, 设链表中每个结点只存放一个字符, 则在C语言中可 使用如下说明:
第4张 串
第4章 串 章
4.1 串的基本概念 串的基本概念 4.2 串的存储结构 4.3 串的运算 4.4 文本编辑
返回主目录
第4张 串
第4章 串 章
4.1 串的基本概念 串的基本概念
串(string)是由n(n≥0)个字符组成的有限序列, 一般记为 s=′ c1 c2… cn′ 其中: s : s是串名; 串中的ci(0≤i≤n) ; c (0≤i≤n)是单个字符, 它可以是字母、 , 数字或其它字符; 用单引号括起来的字符序列是串的值, 但单 引号并不属于串, 它只是用来标识一个串的起始和终止; n为串 的长度, 即串中所包含的字符个数。若n=0, 则称s为空串(null string), 空串是不含有任何字符的串。通常, 用两个相邻的单引 号来表示空串。一个串也可以只包含空白符, 称为空白串。 一 个串的子串是这个串中任一连续的子序列。下面给出一些串 的例子:
第4张 串
第4张 串
在C语言中, 字符串没有紧缩与非紧缩存储格式, 字符串本 身是顺序存储的, 并可以定义静态分配和动态分配。若是静态 分配, 则字符串在重新定义时, 串长不允许大于原串长。 若是动态分配, 则字符串在重新定义时, 系统将重新分配 空间, 串长也就不受原串长的限制。 由此, 我们知道在以字节为单位的计算机上, 顺序分配字 符串是比较理想的。而在大于字节为单位的机器上, 则无论以 紧缩格式, 还是以非紧缩格式进行顺序分配, 都有不足之处。 我们必须根据具体的计算机和实际需要来正确选择分配格式。
第4张 串
第4张 串
第4张 串
4.2.3串变量的存储映象 串变量的存储映象 串变量的存储映象
串变量的存储映象是建立了串名和串值之间对应关系的符 号表。表中的项目可根据实际需要来设置, 以能区分出串并能 方便地存取串值为原则。 例如, 有3个串: a=′Speak′; b=′English′; c=′String′; 假定一个单元仅存放1个字符, 则其串值存储如图4.3所示。
第4张 串
4.2串的存储结构 串的存储结构 串的存储结构
4.2.1 串的顺序存储 串的顺序存储
串的顺序存储就是把串所包含的字符序列, 依次存入连续 的存储单元中去。顺序存储又常用紧缩格式、非紧缩格式和以 单字节为单位的存储格式来实现。 1) 紧缩格式 有的系统的一个存储单元可以存放多个字符, 如果一个字 符占用一个存储单元, 就要浪费许多存储空间。 采用紧缩格式 则可以充分利用存储空间。
第4张 串
3) 以单字节为单位的存储格式 某些计算机(如一般的微型计算机), 是以字节为存取单位的, 一个字符通常又占用一个字节, 这就自然形成了每个存储单位 存放一个字符的分配方式。 这种方式一般不需要存放串长的存 储单元, 而需要以程序中各变量值所不包含的字符作为结束符。 例: 在C语言中, 字符串存放在一个连续的存储单元中, 一个 字符占一个字节。 对于字符串′STRING′, 在微机中只需 7 个存 储单元。 直观表示如下: 在C语言中, 字符串没有紧缩与非紧缩存储格式, 字符串本 身是顺序存储的, 并可以定义静态分配和动态分配。若是静态 分配, 则字符串在重新定义时, 串长不允许大于原串长。
第4张 串
a=′speak English′ b=′string′ c=′speak′ d=′ing′ e=′ ′ ′ f=″ 中a、 b、 c、 d的长度分别是13、 6、 5、 3; c是a的子串; d 是b的子串; e是空白串,长度是1; f是空串, 长度是0。 串与其它数据类型一样, 也有两种串可供使用, 一种是串常 量, 一种是串变量。 串常量具有固定值, 而串变量的值是可以改 变的, 同样, 我们必须用标识符命名串变量。例如在C语言中字 符串可以定义为
第4张 串
5) 字符串的拷贝 strcpy(string1,string2)将字符串string2复制到字符串string1 中, 并返回指向string1的指针。字符串拷贝函数可用如下形式 说明: char * strcpy(string1, string2) char * string1; char * string2; 6) 字符串插入操作 将字符串string2插入到字符串string1的第i个字符开始的位 置称为字符串的插入操作。
第4张 串
设string1=′program′, string2=′ex11′, 若要求将字符串string2 插 入 到 string1 的 第 i 个 字 符 的 位 置 , 以 取 得 插 入 后 新 的 string1=′programex11′, 其插入算法如下: 算法 4.1 void insert( char *string1, *string2, int i) { n=strlen( string1 ); m=strlen( string2 ); if((i<0)||(i>n1)) printf(′NO! ′); else { for (j=n; j>=i; j) string1[j+m]=string1[j]; for (j=i; j<i+m; j++) string1[j]=string2[ji]; } }
第4张 串
相关文档
最新文档