- 0
- 0
- 约7.38千字
- 约 67页
- 2018-12-21 发布于广西
- 举报
int StrLength(HString S){ return S.length; } S2被全部截去 else{ //S2被全部截去 for(i=1;i=S1[0];i++) T[i]=S1[i]; T[0]=MAXSTRLEN; } 程序如下 Status Concat(SString T,SString S1,SString S2){ /* 用T返回S1和S2联接而成的新串。若未截断, 则返回TRUE,否则FALSE */ int i; if(S1[0]+S2[0]=MAXSTRLEN){ /* 未截断 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=S2[0];i++) T[S1[0]+i]=S2[i]; T[0]=S1[0]+S2[0]; return TRUE; } else if(S1[0]MAXSTRLEN){{ /* 截断S2 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=MAXSTRLEN-S1[0];i++) T[S1[0]+i]=S2[i]; T[0]=MAXSTRLEN; return FALSE; } else{ //S2被全部截去 for(i=1;i=S1[0];i++) T[i]=S1[i]; T[0]=MAXSTRLEN; } } 求子串操作 Status SubString(SString Sub,SString S,int pos,int len){ /* 用Sub返回串S的第pos个字符起长度为len的子串。算法4.3 */ int i; if(pos1||posS[0]||len0||lenS[0]-pos+1) return ERROR; for(i=1;i=len;i++) Sub[i]=S[pos+i-1]; Sub[0]=len; return OK; } 串比较 int StrCompare(SString S,SString T){ /* 初始条件: 串S和T存在 */ /* 操作结果: 若ST,则返回值0;若S=T,则返回值=0; 若ST,则返回值0 */ int i; for(i=1;i=S[0]i=T[0];++i) if(S[i]!=T[i]) return S[i]-T[i]; return S[0]-T[0]; } 4.2.2 串的堆分配存储表示 顺序存储的串,其最大长度的确定是一个复杂的问题,如果太大则空间浪费很大,如果太小,则很容易出现截断的情况,为此需要考虑更为有效地存储方式,既不浪费太多的空间,又能够避免截断问题。这就是所谓堆分配存储。 堆分配存储仍然以一组地址连续的存储空间来存储字符串值,但其所需的存储空间是在程序执行过程中动态分配,故是动态的,变化的。 实现方法:利用系统提供的自由存储空间--堆,存储串的字符。使用C语言的动态存储分配函数malloc()和free()来管理。 串的堆式存储结构的类型定义 typedef struct { char *ch; /* 若非空,按长度分配,否则为NULL */ int length; /* 串的长度 */ } HString ; a b c d e a b c x y z d e x y z a b c d e S(原始) T realloc()之后 S(最后结果) 插入操作 0 1 2 3 4 0 1 2 3 4 5 6 7 a b c d e 移动 复制 Status StrInsert(HString S, int pos, HString T){ if (pos1||posS.length+1) return ERROR; if (T.length){ if (!(S.ch =(char *)realloc(S.ch,(S.length+T.length)*sizeof(char)))) exit(OVEFRFLOW); for(i=S.length-1; i=pos-1; - -i) S.ch[i+T.length] = S.ch[i]; for(i=T.length-1; i=0; - -i) S.ch[pos-1+i] = S.ch[i]; S.length += T.length; } return OK; } ADT的实现 Status StrAssign(HString T,char *chars){ int i,j; if(T.ch)
您可能关注的文档
- 《第三章热作模具材料》-课件设计(公开).ppt
- 《第三章塞万提斯与《堂吉诃德》-课件设计(公开).ppt
- 《第三章生物碱(alkaloids)》-课件设计(公开).ppt
- 《第三章食用油脂掺伪鉴别检验》-课件设计(公开).ppt
- 《第三章文艺复兴时期文学第三节莎士比亚戏剧》-课件设计(公开).ppt
- 《第三章运动的守恒定律》-课件设计(公开).ppt
- 《第十二章T淋巴细胞介导的细胞免疫应答》-课件设计(公开).ppt
- 《第十二章国际物流》-课件设计(公开).ppt
- 《第十九章狭义相对论基础(之二)(改)》-课件设计(公开).ppt
- 《第十九章狭义相对论基础(之二)》-课件设计(公开).ppt
- 2026-2030中国硬胶囊填充机行业市场发展趋势与前景展望战略研究报告.docx
- 2025至2030中国高铁零部件行业市场占有率及投资前景评估规划报告.docx
- 2025至2030中国麻醉药品行业市场深度调研及发展潜力与投资报告.docx
- 2025至2030中国飞机高度计行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030中国环境监测仪器行业市场发展分析及投资战略咨询报告.docx
- 2026-2030中国离岸风能行业市场发展趋势与前景展望战略分析研究报告.docx
- 2025至2030中国交流电机制造行业行情走势预测及发展机遇分析报告.docx
- 2025至2030中国影音线材行业市场占有率及投资前景评估规划报告.docx
- 2026-2030中国益生菌片行业销售规模及营销发展趋势预判研究报告.docx
- 2025至2030咖啡豆产业政府现状供需分析及市场深度研究发展前景及规划可行性分析报告.docx
最近下载
- 15万ta电池级硫酸锰新能源材料项目一期竣工环境保护验收监测报告书.pdf VIP
- 西工大航空发动机燃烧学讲义.pdf VIP
- 2025年工业机器人伺服电机性能优化研究报告.docx VIP
- 《深度学习 》课件 第9章-深度强化学习.pptx
- 有机高分子电致发光材料及器件课件.ppt VIP
- 贵州红星发展股份有限公司 高纯钡盐产业化项目 环境影响报告书.doc VIP
- (网络收集版)2025年新课标全国一卷数学高考真题文档版(无答案).pdf
- 2025年工业机器人伺服电机国内外市场对比研究报告.docx VIP
- 2025年无人机驾驶员执照飞行记录在物流运输专题试卷及解析.pdf VIP
- 河南卫生事业单位招聘考试题.pdf VIP
原创力文档

文档评论(0)