书签 分享 收藏 举报 版权申诉 / 49
上传文档赚钱

类型数据结构-线性表-单向和双向循环链表及习题课.课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3021390
  • 上传时间:2022-06-23
  • 格式:PPT
  • 页数:49
  • 大小:503KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数据结构-线性表-单向和双向循环链表及习题课.课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构 线性 单向 双向 循环 习题 课件
    资源描述:

    1、线性表线性表(List)小结和作业小结和作业双向循环链表双向循环链表习题讲解习题讲解单向循环链表单向循环链表一元多项式一元多项式单向循环链表单向循环链表定义:最后一个结点的指针不是空指针,而是指向了头结点。La1a2a3L逻辑形态:单向循环链表单向循环链表差异:1、判断空表的条件:L-next=NULL变为L-next =L2、判断最后一个数据元素的条件由p-next=NULL 改变为p-next=LInitListLStatus InitList(LinkList &L)node=(LNode *) malloc(sizeof(LNode);if(!node) return(OVERFLOW

    2、);L=node;node-next=L;return(OK);ListLength1、p指向头结点, j=02、如果p-next != L,j+, p-next3、重复2,直到 p为空, j即为长度。a1a2a3LListLengthint ListLength(LinkList L)count=0;p=p-next;count+;return(count);p=L;while( p-next)count=0;p=p-next;count+;return(count);p=L;while( p-next!=L)GetItem1、p指向头结点2、重复p=p-next操作 i 次3、p指向了第i

    3、个元素pa1a2a3L单向循环链表单向循环链表a1a2a3L尾指针:a1a2a3L头指针:单向循环链表单向循环链表a1a2a3A将循环单链表A的尾和B的头相连,构成一个新的循环单链表,由B指向新表尾b1b2b3BA-next=q-next;q=B-next; B-next=A-nextfree(q); A=NULL;q双向链表双向链表一、作用:方便定位一个结点的前驱结点和后继结点二、结点的形式ai三、C语言描述typedef struct DuLNode ElemType data; struct DuLNode *prior; struct DuLNode *next; DuLNode;双向

    4、链表双向链表五、逻辑形态四、头指针的描述typedef struct DuLNode * DuLinkList;La2a3a1L部分操作的实现部分操作的实现InitList(&L)ListInsert(&L, i, e)ListDelete(&L, i, &e)ListLength(L)InitListStatus InitList(DuListLink &L)node=(DuLNode *)malloc(sizeof(DuLNode);return(OK);if(!node)return(OVERFLOW);node-prior=node-next=NULL;L=node;LListLeng

    5、th1、p指向头结点, j=02、如果p-next不为空,j+, p=p-next3、重复2,直到 p-next为空, j即为长度。a2a3a1LListLength(讨论讨论)1、p指向头结点, j=02、如果p-prior不为空,j+, p=p-prior3、重复2,直到 p-prior为空, j即为长度。a2a3a1LListLengthint ListLength(DuLinkList L)count=0;p=p-next;count+return(count);p=L;while( p-next)count=0;p=p-prior;count+return(count);p=L;wh

    6、ile( p-prior)ListInsert逻辑结构的变化 , (a1, , ai-1, ai, , an) (a1, , ai-1, e, ai, , an)存储结构的变化ListInsertai-1aies-next = p-next; s-prior = p; p-next = s; s-next-prior=s; psai-1aiListInsert1、p指向头结点分析分析:2、执行p=p-next i-1次,使得p指向第 i-1 个结点3、申请一个新结点s,调整s、第i-1和第i个结点的指针ListInsert找到第i-1个结点的代码是:p=L; j=0;while(jnext;j

    7、+ListInsert生成一个新结点存放数据元素e 的代码是:s =(DuLNode *) malloc(sizeof(DuLNode);if(!s) return(OVERFLOW);s-data = e;ListInserts-next = p-next; s-prior = p; p-next = s; s-next-prior=s; ListInsert(讨论讨论)a2a3a1Less-next = p-next; s-prior = p; p-next = s; s-next-prior=s; i=1?i=length+1?ListDelete (a1, , ai-1, ai, ai

    8、+1, , an) , (a1, , ai-1, ai+1, , an)逻辑结构的变化:存储结构的变化:ListDeleteai-1aiai+1p-next = p-next-next;p-next-prior = p;pai-1qq=p-next;ListDelete1、p指向头结点q = p-next; p-next = p-next-next; p-next -prior= p; e = q-data; free(q);2、执行i-1 次p=p-next,p指向了第i-1个结点3、q=p-next,q指向第i个结点4、修改第i-1个和第i个结点的指针5、释放结点qListDelete(讨

    9、论讨论)a2a3a1Lp-next = p-next-next;p-next-prior = p;ai-1aiai+1pai-1i=1?i=length?双向循环链表双向循环链表1、每个结点的next域构成了一个循环单链表2、每个结点的prior域构成了另一个循环单链表逻辑形态La2a3a1L双向循环链表双向循环链表-Insertai-1aiepsai-1ais-next = p-next; s-prior = p; p-next = s; s-next-prior=s; a2a3a1L双向循环链表双向循环链表-Deletep-next = p-next-next;p-next-prior =

    10、 p;a2a3a1Lai-1pai-1aiai+1线性表的应用线性表的应用-一元多项式一元多项式p = (p0, p1, ,pn)但是对于形如但是对于形如: : S(x) = 1 + 3x10000 2x20000nnxpxpxppxp+=.)(2210 稀疏一元多项式稀疏一元多项式 一般情况下的一元稀疏多项式可写成: p(x) = p1xe1 + p2xe2 + + pmxem其中:pi 是指数为ei 的项的非零系数, 0 e1 e2 em = n可以下列线性表表示:(p1, e1), (p2, e2), , (pm,em)稀疏一元多项式稀疏一元多项式 p(x) = 7x3 - 2x12 -

    11、 8x999例如例如: :( (7, 3), (-2, 12), (-8, 999)稀疏一元多项式的实现稀疏一元多项式的实现typedef struct / 项项的表示 float coef; / 系数系数 int expn; / 指数指数 ElemType; typedef LinkList polynomial; / 用带表头结点的有序链表表示多项式一元多项式的操作一元多项式的操作AH = 1 - 3x6 + 7x12BH = - x4 + 3x6 - 9x10 + 8x14-3 67 12AH 3 6-9 108 14BH-1 41 0 1 0CH-1 4-9 107 128 14 习题

    12、讲解习题讲解-2.21(-2.21(方法一方法一) )2.21 逆置顺序表a1 a2 a3 a4 an-3 an-2 an-1 anL.elemL.lengthL.listsizean an-1 an-2 an-3 a4 a3 a2 a1L.elemL.lengthL.listsizea1 ana2an-1a3an-2ai an-i+1i=1,length/2习题讲解习题讲解-2.21-2.21void reverse(SqList &L)if(L.length=1)return;for(i=1;i=L.length/2;i+)tmp=L.elemi-1;L.elemi-1=L.elemL.l

    13、ength -i;L.elemL.length - i=tmp;ai an-i+1i=1,length/2ElemType tmp;习题讲解习题讲解-2.21(-2.21(方法二方法二) )2.21 逆置顺序表a1 a2 a3 a4 an-3 an-2 an-1 anL.elemL.lengthL.listsizean an-1 an-2 an-3 a4 a3 a2 a1L.elemL.lengthL.listsizea1 ana2an-1a3an-2i=1, 2, 3j=n, n-1,习题讲解习题讲解-2.21-2.21void reverse(SqList &L)if(L.length=1

    14、)return;for(i=1, j=L.length; inext=t,t=p,p=q,q=p-next5、重复执行,直到q为空指针La1a2ptq6、L-next-next=NULL, L-next=p;习题讲解习题讲解-2.22(-2.22(方法一方法一) )1、如果表中只有一个结点,不处理2、如果表是空表,不处理LL习题讲解习题讲解-2.22(-2.22(方法一方法一) )void reverse(LinList &L)if(!L-next | !L-next-next) return;/空表或单元素t=L, p=t-next, q=p-next;/t, p, q分别指向ai-1,ai

    15、,ai+1while(q)p-next=t;t=p, p=q, q=p-next;L-next-next=NULL;L-next=p;习题讲解习题讲解- -2.22( 扩展扩展)双向循环链表?a2a3a1LL习题讲解习题讲解- -2.22( 扩展扩展)a2a3a1Lpqpqpqpqp-next=p-prior;p-prior=q;p=q;q=p-next;p=L;q=p-next;习题讲解习题讲解- -2.22( 扩展扩展)void reverse(DuLinkList &L) / 逆置带头结点的单链表 L p=L; q=p-next; while ( q!=L) p-next=p-prior; p-prior=q; p=q; q = p-next; 小小 结结双向循环链表 双向链表 由于结构的不合理,使用的较少作业作业作业:2.8,2.32

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构-线性表-单向和双向循环链表及习题课.课件.ppt
    链接地址:https://www.163wenku.com/p-3021390.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库