3数据结构清华大学严蔚敏PPT栈和队列.ppt

  1. 1、本文档共85页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3数据结构清华大学严蔚敏PPT栈和队列

1 串的联结操作 Status StrConcat ( StringType s, StringType t) /* 将串t联结到串s之后,结果仍然保存在s中 */ { int i, j ; if ((s.length+t.length)MAX_STRLEN) Return ERROR ; /* 联结后长度超出范围 */ for (i=0 ; it.length ; i++) s.str[s.length+i]=t.str[i] ; /* 串t联结到串s之后 */ s.length=s.length+t.length ; /* 修改联结后的串长度 */ return OK ; } 2 求子串操作 Status SubString (StringType s, int pos, int len, StringType *sub) { int k, j ; if (pos1||poss.length||len0||len(s.length-pos+1)) return ERROR ; /* 参数非法 */ sub-length=len-pos+1 ; /* 求得子串长度 */ for (j=0, k=pos ; k=leng ; k++, j++) sub-str[j]=s.str[i] ; /* 逐个字符复制求得子串 */ return OK ; } 4.2.2 串的堆分配存储表示 实现方法:系统提供一个空间足够大且地址连续的存储空间(称为“堆”)供串使用。可使用C语言的动态存储分配函数malloc()和free()来管理。 特点是:仍然以一组地址连续的存储空间来存储字符串值,但其所需的存储空间是在程序执行过程中动态分配,故是动态的,变长的。 串的堆式存储结构的类型定义 typedef struct { char *ch; /* 若非空,按长度分配,否则为NULL */ int length; /* 串的长度 */ } HString ; 1 串的联结操作 Status Hstring *StrConcat(HString *T, HString *s1, HString *s2) /* 用T返回由s1和s2联结而成的串 */ { int k, j , t_len ; if (T.ch) free(T); /* 释放旧空间 */ t_len=s1-length+s2-length ; if ((p=(char *)malloc(sizeof((char)*t_len))==NULL) { printf(“系统空间不够,申请空间失败 !\n”) ; return ERROR ; } for (j=0 ; js-length; j++) T-ch[j]=s1-ch[j] ; /* 将串s复制到串T中 */ for (k=s1-length, j=0 ; js2-length; k++, j++) T-ch[j]=s1-ch[j] ; /* 将串s2复制到串T中 */ free(s1-ch) ; free(s2-ch) ; return OK ; } 4.2.3 串的链式存储表示 串的链式存储结构和线性表的串的链式存储结构类似,采用单链表来存储串,结点的构成是: ◆ data域:存放字符,data域可存放的字符个数称为结点的大小; ◆ next域:存放指向下一结点的指针。 若每个结点仅存放一个字符,则结点的指针域就非常多,造成系统空间浪费,为节省存储空间,考虑串结构的特殊性,使每个结点存放若干个字符,这种结构称为块链结构。如图4-1是块大小为3的串的块链式存储结构示意图。 串的块链式存储的类型定义包括: ⑴ 块结点的类型定义 #define BLOCK_SIZE 4 typedef struct Blstrtype { char data[BLOCK_SIZE] ; struct Blstrtype *next; }BNODE ; a b c e p c g @ @ ? ?? head 图4-1 串的块链式存储结构示意图 (2) 块链串的类型定义 typedef struct { BNODE head; /* 头指针 */ int Strlen ; /* 当前长度 */ } Blstring ; 在这种存储结构下,结点的分配总是完整的结点为单位,因此,为使一个串能存放在整数个结点中,在串的

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档