- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《数据结构》--第二章线性表.ppt
第2章 线性表 学习目的要求: 3. 单链表上的插入运算 2.3 线性表的链式存储结构及其运算 q-data = x; q-next = p-next; p-next = q; 4. 单链表上的删除运算 删除单向链表中的结点x,并由系统收回其占用的存储空间,其过程如下: (1) 设定两个指针p和q,p指针指向被删除结点,q为跟踪指针,指向被删除结点的直接前驱结点。 (2) p从表头指针 head 指向的第一个结点开始依次向后搜索。当p→ data 等于x时,被删除结点找到。 (3)修改p的前驱结点q的指针域。使p结点被删除,然后释放存储空间。 2.3 线性表的链式存储结构及其运算 4. 单链表上的删除运算 2.3 线性表的链式存储结构及其运算 q-next=p-next; free(p); 5. 输出单链表 若要将单链表按其逻辑顺序输出,就必须从头到尾访问单链表中的每一个结点。 2.3 线性表的链式存储结构及其运算 如果将单链表最后一个结点的指针指向头结点,使链表形成一个环形,此链表就称为循环链表(Circular Link List)。 2.3 线性表的链式存储结构及其运算 2.3.3 循环链表结构 循环链表中,*p是最后一个结点的判断条件: p-next == head 在循环链表中,可以从表中任一结点出发找到它的直接前驱,而不必从head出发。 2.3 线性表的链式存储结构及其运算 2.3.3 循环链表结构 1. 双向链表的基本概念 在循环链表的结点中再增加一个指针域,这个指针直接指向该结点的直接前驱。这样,链表中一个结点就有了两个指针域,我们把这样的链表称为双向链表。 2.3 线性表的链式存储结构及其运算 2.3.4 双向链表结构 如果每条链都构成一个循环链表,则称这样的链表为双向循环链表。 2.3 线性表的链式存储结构及其运算 双向链表的重要特点: 2.3 线性表的链式存储结构及其运算 (p-next)-prior = p = (p-prior)-next next p prior next a2 prior next a1 prior p-next (p-next)-prior p-prior (p- prior)-next 2. 插入运算 在双向链表的p结点之后插入新结点q。 2.3 线性表的链式存储结构及其运算 q-prior=p; q-next=p-next; (p-next)-prior=q; p-next=q; 3. 删除运算 将双向链表中的 p 结点删除。 2.3 线性表的链式存储结构及其运算 (p-prior)-next=p-next; (p-next)-prior=p-prior; free(p); 例2.1 有两个线性表A和B,都是循环链表存储结构,两个链表头指针分别为 head1和head2 ,将B链表链接到A链表的后面, 合并成一个链表。 2.4 算法应用举例 2.4 算法应用举例 ①找到两个链表的最后一个结点 ② p-next = head2-next ③ q-next = head1 ④free(head2) 例2.2 一元多项式的加法运算。设有两个一元多项式分别为: An(x)=a0+a1x+a2x2+…+anxn Bm(x)=b0+b1x+b2x2 +…+bm x m 多项式中每个非零项的系数用一个结点来表示,结点中含有两个数据域和一个指针域,两个数据域分别存放非零项的系数和指数。 typedef struct pnode { int coef; /*系数以整型为例*/ int exp; /*指数*/ struct pnode *next; }PNODE; 2.4 算法应用举例 设有多项式 A(x)=1+2x+4x3 (1) B(x)=2-2x+3x2 (2) 2.4 算法应用举例 多项式(1)加多项式(2)的和为多项式(3): R(x)=3+3x2 +4x3 (3) 2.4 算法应用举例 == x!=0 系数相加(x) 1、p结点的系数域存放x的值 2、s后移,p后移 3、u=q 4、q重新赋值为u的直接后继结点 5、释放u 1、s后移 2、p后移 1、u指向q的直接后继结点 2、将q的直接后继设为p 3、将s的直接后继设置为q 4、s后移到q 5、q后移到u 否 是 是 否 是 否 指数比较,分相等、大于、小于三种情况 1、s指向p的下一个结点 2、释放p 3、p重新赋值
文档评论(0)