第九课 本课主题 循环链表与双向链表 教学目的 掌握循环链表的概念掌握双向链表的的表示与实现 教学重点 双向链表的表示与实现 教学难点 双向链表的存储表示 授课内容 一复习线性链表的存储结构 二循环链表的存储结构 循环链表是加一种形式的链式存储结构它的特点是表中最后一个结点的指针域指向头结点 循环链表的操作和线性链表基本一致差别仅在于算法中的循环条件不是p或p>next是否为空而是它们是否等于头指针 三双向链表的存储结构 提问单向链表的缺点是什么? 提示如何寻找结点的直接前趋 双向链表可以克服单链表的单向性的缺点 在双向链表的结点中有两个指针域其一指向直接后继另一指向直接前趋 线性表的双向链表存储结构 typedef struct DulNode{ struct DulNode *prior; ElemType data; struct DulNode *next; }DulNode*DuLinkList; 对指向双向链表任一结点的指针d有下面的关系 d>next>priou=d>priou>next=d 即当前结点后继的前趋是自身当前结点前趋的后继也是自身 双向链表的删除操作 Status ListDelete_DuL(DuLinkList &Lint iElemType &e){ if(!(p=GetElemP_DuL(Li))) |