第二章 线性表-精.ppt

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

Step : ①保存A表头结点位置 ②B表开始结点链到A的尾部 ③释放B的头部 ④B的尾指针接上A的头结点,形成新的循环表 LinkList connect ( LinkList A , LinkList B ) { LinkList p = A – next ; A – next = B –next – next ; free (B – next ) ; B –next = p; return B ; } 3 双向链表 双向链表结点结构: 指向直接前驱 指向直接后继 prior data next a1 an head 1 表达: typedef struct LNode { ElemType data ; //结点数据域 struct LNode * next ; //后向链域 struct LNode * prior ; //前向链域 } * DLinkList ; ① 双链表的插入 (非空表) q-prior = p; q-next = p-next; p-next = q; q-next-prior = q; 在结点 *p 后插入25 head 31 48 15 p p head 31 48 15 q 2 操作: 25 ② 双链表的删除 p-prior-next = p-next; p-next-prior = p-prior; free ( p ); 删除48 head 31 48 15 p head 31 15 1 单链表的比较 head … 4 2 7 an ∧ head … 3 2 7 an ∧ 几个典型的链表算法 2 单链表的反转 head … an-1 a1 a2 an ∧ head … an-1 a1 a2 an ∧ 反转前: 反转后: 3 在一个单链表中的P所指结点之前插入一个S所指结点时,可执行如下操作: S-next = ; P-next = S ; t = P-data; P- data = ; S -data = ; P - next ; S - data ; t ; 答案: 4 在一个单链表中删除P所指结点时,应执行如下操作: q = P-next ; P-data = P -next - data ; P- next = ; free (q); P-next-next 答案: 5 设计一个算法, 将顺序表中所有值为X的元素替换为Y. 6 试分别用顺序表和单链表作为存储结构, 实现将线性表(a1,a2,a3……an) 就地逆置的操作,辅助空间为 O(1) . InvertSqlist(sqlist L) { int i ; ElemType t ; for ( i=0 ; i L.length/2 ; i++ ) { t = L. elem [ i ] ; L. elem [ i ] = L. elem [ L.length – i -1 ] ; L.elem [L.length – i -1 ] = t ; } } InvertLinklist(LinkList L) { P = L; L = NULL ; while ( P ) { s = P ; P = P-next ; s - next = L ; L = s; } } 7 删除线性表a中第i个元素起的k个元素. Status DeleteK(SqList a , int i , int k ) { if(i1||k0||i+k-1a.length) return ERROR; for(count=1;i+count-1=a.length-k;count++) //注意循环结束的条件

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档