- 1、本文档共72页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chapt串
顺序串变量的初始化声明 1)不设置字符串初值: char 字符串变量[字符串长度] 注意这里长度包含”\0” 2)设置字符串初值: char 字符串变量[字符串长度] = “字符串常数” 注意 [字符串长度]包含”\0”,即为字符串的有效长度加1 3)也可以省去[字符串长度],但必须设置初值: char 字符串变量[ ] = “字符串常数” 4)使用指向字符串数组的指针变量: char 指针变量(*字符串变量)= “字符串常数” 如:char *ch=”happy”; 等价于: char *ch; ch=”happy” (happy的首地址赋给ch) 链串结构的逻辑示意图 每个字符对应一个结点,整条链表存储一个字符串。 下图所示是一个结点大小为1的链串。 链串示意图 字符串的块链存储表示 由于串结构的特殊性—每个数据元素是一个字符,则用链表存储串值时,存在一个结点大小的问题:即每个结点可以存放一个字符,也可以存放多个字符。 当结点存放多个字符时,由于串长不一定是结点大小的整数倍,则链表的最后一个结点不一定全被字符占满,通常补上“#” 或其它的非字符串集的特殊符号。块链逻辑图示如下: head . a b c . d e f . x # # ∧ ∧ 字符串的块链结构逻辑图 tail 块链结构定义: 通常将块的结构定义放置在字符串链表的定义之上。 为了便于进行字符串的操作,当以链表作为存储结构时,通常设立头指针和尾指针两个指针,并给出字符串的长度。 typedef struct { chunk *head , *tail; int length; /*串长*/ } Lstring; /*串链*/ 其中,chunk是需要用户先定义的块结构,也就是结点的类型、大小(块大小)和指针: typedef struct chunk { char ch [chunksize]; /*chunksize为块长,结点中字符个数*/ struct chunk *next; } chunk; 字符串的块链结构通常适合于做串联接操作。 链串基本运算的实现 (1) StrAssign(s,t) 将一个字符串常量t赋给串s,即生成一个其值等于t的串s。以下采用尾插法建立链串。 void StrAssign(LiString *s,char t[]) { int i; LiString *r,*p; /*r始终指向尾结点*/ s=(LiString *)malloc(sizeof(LiString)); r=s; for (i=0;t[i]!=\0;i++) { p=(LiString *)malloc(sizeof(LiString)); p-data=t[i];r-next=p;r=p; } r-next=NULL; } (2) StrCopy(s,t) 将串t复制给串s。以下采用尾插法建立复制后的链串s。 void StrCopy(LiString *s,LiString *t) { LiString *p=t-next,*q,*r; s=(LiString *)malloc(sizeof(LiString)); r=s; /*r始终指向尾结点*/ while (p!=NULL) /*将t的所有结点复制到s*/ { q=(LiString *)malloc(sizeof(LiString)); q-data=p-data;r-next=q;r=q; p=p-next; } r-next=NULL; } (3) StrEqual(s,t) 判断两个串是否相等。若两个串s与t相等则返回真(1);否则返回假(0)。 int StrEqual(LiString *s,LiString *t) { LiString *p=s-next,*q=t-next; while (p!=NULL q!=NULL p-data==q-data) { p=p-next;q=q-next; }
您可能关注的文档
最近下载
- 物理化学(下)(湖南科技大学)智慧树知到期末考试答案2024年.docx
- 部编版八年级道德与法治上册第十课《建设美好祖国 关心国家发展》课件.ppt
- 关于母子公司之间风险隔离、防范利益冲突 与输送及关联交.pdf
- _循环肿瘤细胞检测在胃肠道肿瘤诊疗中的应用中国专家共识(2023版).pdf
- 2024年5月18日阿克苏地直遴选面试真题及答案解析(上午卷).doc VIP
- XXXX《个人与团队管理》机考答案.pdf VIP
- 2023-2024年四年级上册科学(湘教版) 期末模拟试卷(一)(含解析).doc VIP
- 滚花螺栓标准(2016版)-STD3938.pdf
- LEICAX2数码相机说明书图文.pdf
- 一本正经玩科学.pptx VIP
文档评论(0)