《数据结构c语言串的堆分配存储源程序》由会员分享,可在线阅读,更多相关《数据结构c语言串的堆分配存储源程序(7页珍藏版)》请在人人文库网上搜索。

1、include#include#include#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef structchar *ch;int length;HString;/初始化操作void InitString(HString *T) T-length=0;T-ch=NULL;/赋值操作Status StrAssign(HString *T,char *chars)/生成一个其值等于串常量chars的串Tint i,j;/char *c;if(T-ch)free(T-ch); /释放T原有空间/for(。

2、i=0,c=chars; *c;+i,+c); /求chars的长度i,*c表*c!=NULLi=strlen(chars);if(!i)T-ch=NULL;T-length=0;elseT-ch=(char*)malloc(i*sizeof(char);if(!T-ch)exit(OVERFLOW);for(j=0;jchj=charsj;T-length=i;return OK;/StrAssign/串复制操作Status StrCopy(HString *T,HString S)int i;if(T-ch)free(T-ch);T-ch=(char*)malloc(S.length*si。

3、zeof(char);if(!T-ch)exit(OVERFLOW);for(i=0;ichi=S.chi;T-length=S.length;return OK;/StrCopy/判空操作Status StrEmpty(HString S)if(S.length=0&S.ch=NULL)return OK;elsereturn ERROR;/StrEmpty/求长度操作int StrLength(HString S)return S.length;/Strlength/串比较操作int StrCompare(HString S,HString T)int i;for(i=0;ich)free。

4、(S-ch);S-ch=NULL;S-length=0;return OK;/ClearString/串连接操作Status Concat(HString *T,HString S1,HString S2)int i;if(T-ch)free(T-ch); /释放旧空间T-ch=(char*)malloc(S1.length+S2.length)*sizeof(char);if(!T-ch)exit(OVERFLOW);for(i=0;ichi=S1.chi;T-length=S1.length+S2.length;for(i=0;ichS1.length+i=S2.chi;return OK。

5、;/Concat/求子串操作Status SubString(HString *Sub,HString S,int pos,int len)int i;if(posS.length|lenS.length-pos+1)return ERROR;if(Sub-ch)free(Sub-ch); / 释放旧空间if(!len) / 空子串Sub-ch=NULL;Sub-length=0;else / 完整子串Sub-ch=(char*)malloc(len*sizeof(char);if(!Sub-ch)exit(OVERFLOW);for(i=0;ichi=S.chpos-1+i;Sub-leng。

6、th=len;return OK;/SubString/求子串位置操作int Index(HString S,HString T,int pos)/ T为非空串。若主串S中第pos个字符之后存在与T相等的子串,/ 则返回第一个这样的子串在S中的位置,否则返回0int i,m,n;HString Sub;InitString(&Sub); /一定要初始化Sub!if(pos0)n=StrLength(S);m=StrLength(T);i=pos;while(in-m+1,则找不出长度为m的子串SubString(&Sub,S,i,m); if(StrCompare(Sub,T)!=0)i+; 。

7、/从位置i起取子串与T作比较else return i;/while/ifreturn 0;/Index/插入操作 Status StrInsert(HString *S,int pos,HString T)/ 1posStrLength(S)+1。在串S的第pos个字符之前插入串Tint i;if(posS-length+1)return ERROR;if(T.length)S-ch=(char*)realloc(S-ch,(S-length+T.length)*sizeof(char);if(!S-ch) exit(OVERFLOW);for(i=S-length;i=pos-1;-i) 。

8、/ 为插入T而腾出位置S-chi+T.length=S-chi;for(i=0;ichpos-1+i=T.chi; /插入TS-length+=T.length;return OK;/StrInsert/删除操作Status StrDelete(HString *S,int pos,int len)int i;if(S-lengthlength-len;i+)S-chi=S-chi+len;S-length-=len;S-ch=(char*)realloc(S-ch,S-length*sizeof(char);return OK;/StrDelete/输出操作void StrPrint(HSt。

9、ring T)int i;for(i=0;i0)printf(S1S2n);else if(StrCompare(S1,S2)0)printf(S1S2n);elseprintf(S1=S2n);printf(n连接串S1,S2得串S3:);if(Concat(&S3,S1,S2)StrPrint(S3);elseprintf(串连接失败!);printf(串S3的长度为%d:n,StrLength(S3);printf(n用Sub返回串S3中第pos个字符起长度为len的字符:n);printf(输入pos,len的值:n);scanf(%d%d,&pos,&len);if(SubStrin。

10、g(&Sub,S3,pos,len)=1)printf(输出串Sub:);StrPrint(Sub);elseprintf(序号不合法,取子串失败!n);printf(n求串Sub在串S3中的位置:n);if(Index(S3,Sub,pos)=0)printf(pos值不合法!n);elseprintf(pos值为%dn,Index(S3,Sub,pos);printf(n在串S1的第pos位置插入串S2n);printf(输入pos的值:n);scanf(%d,&pos);if(StrInsert(&S1,pos,S2)=1)printf(输出串S1:);StrPrint(S1);elseprintf(插入失败!n);printf(n从串S1中删除第pos位置起长度为len的字符:n);printf(输入pos,len的值:n);scanf(%d%d,&pos,&len);if(StrDelete(&S1,pos,len)printf(输出串S1:);StrPrint(S1);elseprintf(删除失败!n。

串的堆分配存储c语言,数据结构c语言串的堆分配存储源程序相关推荐

  1. 稀疏矩阵的三元组存储方法c语言,数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现...

    陈独秀的秘密 数据结构C语言版 稀疏矩阵的三元组顺序表存储表示和实现 P98 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月8日 */ typedef int ElemType; // ...

  2. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc

    数据结构C语言字符串的基本操作 串的基本操作 #include #include #include #define m 100 typedef struct{ char ch[m]; int leng ...

  3. 字符串括号匹配c语言,数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法...

    问题标题 数据结构C语言括号的检验源程序 , 数据结构(C) 请用类C语言实现括号匹配的检验这个算法 2019-8-21来自ip:13.149.196.77的网友咨询 浏览量:270 手机版 问题补充 ...

  4. c语言数据结构将链串里所有值为x的字符删除_redis数据结构与对象到底长什么样?...

    写在前面 前方高能!前方高能!前方高能!文章较长,可能需要花费您两个小时的时间,请做好心理准备,但是一旦你准备看下去,我相信您一定会有收获,不枉此行,let's go!!! 一.简单动态字符串 说明: ...

  5. C语言——数据结构之广义表(概念及其存储结构)

    前言 本节我们来说说C语言中的广义表.主要介绍广义表的概念定义,并说明其存储结构,算法中将使用到递归思想. 广义表是线性表的一种推广,在数据结构中有广泛应用. 一.广义表的概念 1.广义表的概念 (1 ...

  6. c语言对称矩阵的压缩存储_【数据结构】对称矩阵及对称矩阵的压缩存储

    对称矩阵: 设一个N*N的方阵A,A中任意元素Aij,当且仅当Aij == Aji(0 <= i <= N-1 && 0 <= j <= N-1),则矩阵A是对 ...

  7. 数据结构折半查找算法C语言,数据结构C语言实现----折半查找

    运行结果: 代码如下: #include //数组初始化函数 void Array_get(int array[],int max) { printf("请输入一个数组,大小从低到高,各个数 ...

  8. 约瑟环c语言,数据结构C语言 约瑟环问题 谢谢大家 一定要AC呀

    满意答案 shadow88kia 2013.11.12 采纳率:50%    等级:12 已帮助:4173人 这是我以前的约瑟夫问题,输入输出稍微不一样. #include #include type ...

  9. 用c语言实现串的存储结构是指,数据结构学习笔记-串(C语言实现)

    串由零个或多个字符组成,说白了就是字符串.串的存储方式相对于线性表来讲有些不同,他分为以下几种:顺序存储.堆分配存储.链式存储.顺序存储通常在数组中的头元素存放字符串长度.堆分配存储通常会动态分配空间 ...

最新文章

  1. MySQL基础篇:数据操作语言DML
  2. QDoc建立连结creatinglinks
  3. MS Learn 宝藏资源库 - 学习经验分享
  4. C#趣味程序---百鸡百钱
  5. Shell中的while循环
  6. win10 联想键盘快捷键关闭_这些Win10键盘快捷键你必须掌握,系统高手必备技能...
  7. Random()种子数
  8. VsCode crtl + 鼠标右键 python代码无法跳转
  9. python中如何创建一个空列表_Python创建空列表的字典2种方法详解
  10. Kafka从上手到实践 - Kafka集群:启动Kafka集群 | 凌云时刻
  11. OpenCV DNN调用训练好的caffe 模型(目标检测)
  12. python发短信sim800_sim800a发短信流程
  13. docker+scrapy+scrapy_splash爬取大麦网
  14. 衣带渐宽终不悔为伊消得人憔悴,土蜂蜜科技终成正果
  15. Hadoop-kms总结
  16. Golang: 让你的零值更有用
  17. 关于重定向和服务器转发的知识
  18. 落地,请开手机李小晚【转】
  19. 切绳子题解(博客搬家)
  20. 【JS篇】禁止手机默认键盘弹出

热门文章

  1. bzoj 2946 [Poi2000]公共串——后缀自动机
  2. 蚂蚁金服×西安银行 | 西安银行手机银行App的智能升级之路
  3. java入门(p1)进入java的世界
  4. 安装hadoop图文
  5. 聚焦OA品牌:OA产品影响力是选型关键
  6. Linux下des对称性加密
  7. framework7使用笔记
  8. System.Web.Caching.Cache类 缓存 各种缓存依赖
  9. 如何在Django中接收JSON格式的数据
  10. 使用inno setup打包程序完整脚本(.net框架检测,重复安装检测)