数据结构-线性表-单向和双向循环链表及习题课.课件.ppt
- 【下载声明】
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
展开阅读全文