单链表的应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单链表的应用—带头结点 链表的遍历: 访问链表每个元素一次且仅一次。 基本算法如下: void print(node *L) { P=L-next; while(P!=NULL) {visit(P-data); P=P-next; } } 例 设计算法,判断带头结点单链表L是否递增?若递增,则返回ture,否则返回false。 分析: (1)链表空,返回true; (2)只有一个元素,返回true; (3)每个元素都小于其直接后继,返回true; 否则,返回false; bool Judge(node *L) { node *P=L-next; if(P==NULL) return(1); while(P-next!=NULL) { if(P-dataP-next-data) P=P-next; else return(0); } return(1); } 设计算法,使得带头结点的整型单链表中的所有元素值都变成原来的3倍。 如:原L=(1,2,3,4,5)变成L’=(3,6,9,12,15) 2、双链表和双循环链表 (1)双链表 类型描述如下: prior data next typedef struct dnode {elementtype data; dnode *next,*prior; 引用:dnode *Head; } 插入 假设被插入位置的前一个结点的指针P已找到,插入由S指向的结点: ①S-next=P-next; ② S-prior=P; ③ P-next=S; ④ S-next-prior=S; 删除 假设被删除结点的指针P已找到,删除由P指向的结点: ①P-next-prior=P-prior; ② P-prior-next=P-next; ③ delete(P); 顺序表: 逻辑上相邻的元素物理上也相邻 ; 可直接定位,节省搜索时间 然而,在 插入、删除时,需移动元素,浪费时间; 链表: 逻辑上相邻的元素物理上不一定相邻; 插入、删除时,不需移动元素。 §2.4 串 一、串的定义和运算 1、定义: 串 :是由n个字符a1,a2,…,an组成的有限序列(n≥0),记作S=“a1a2…an” 其中n为串长度,n=0时为空串; 注意:空串和空格串的区别: 空串——没有元素; 空格串——元素是空格符; 子串:串S中若干个连续的字符组成的序列。 2、运算: (1)赋值(S=S1):将一个串值S1传送给一个串名S ; (2)求长度str_length(S):返回串S的长度值 ; (3)连接运算(S1+S2):将S1和S2连接成一个新串; (4)求子串substr(S,i,j):返回串S从第i个元素开始的j个元素所组成的子串 ; (5)串比较:比较两个串的大小 ; (6)插入运算insert(S,i,S1):将子串S1插入到串S的从第i个字符开始的位置上 ; (7)删除运算delete(S,i,j):删除串S中从第i个字符开始的j个字符 。 例 (1)空串和空格串 S1=“”; S1是空串, S2=“ ”; S2是空格串; (2)子串 S3=“abcde*$”;S4=“bcd”;S5=“abe”; S4是S3的子串;S5不是S3的子串。 例 (1)赋值 S=“abcde*$”;S1=“bcd”;S2=S; 右边的值=左边的串名。 (2)连接运算 已知:S1=“bcd”;S2=“ace*”; 则:S2+S1=“ace*bcd” (3)求子串 S=“abcde*$”; substr(S,2,4)=“bcde” 例(4)插入 已知:S=“abcde*$”;S1=“bcd”;S2=“kf”; insert(S,4,“mn”)=“abcmnde*$”; insert(S1,2,S2)=“bkfcde” (5)删除 S=“abcde*$”;S1=“bcd”; delete(S,5,2)=“abcd$”; delete(S1,1,2

文档评论(0)

考试教学资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档