资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2016-12-26,#,2016,数据结构,Data structure,讲授:简勇,双向链表删除当前结点的操作,常州信息职业技术学院,02,三、链表的插入,03,双向链表删除当前结点的操作,1.2,要求:,在带头结点的双向链表中,删除当前结点,*p,,设,p,NULL,。可将指向结点的指针,p,作为参数。,1,2,算法思路:,当前结点,*p,有两种情况:,(,1,),*p,不是尾结点,即,p-next!=NULL,;,此时,需要完成以下两个操作,如图,2-23,所示。,2,个操作分别是:,p- prior-next = p-next;,p -next- prior = p- prior;,(,2,),*p,是尾结点,即,p-next=NULL,。,此时,只需完成操作,p- prior-next = NULL;,或,p- prior-next = p-next;,即可。,但要注意,不论是哪种情况最后都要做一个释放结点,p,的存储空间的操作,即,free(p),。,图,2-23,双向链表删除当前结点操作,p,04,双向链表删除当前结点的操作,1.2,算法实现,void DDeleteNode(DListNode *p),/,删除当前结点的操作,if(p-next),p-prior-next=p-next;,p-next-prior=p-prior;,else,p-prior-next=NULL;,Free(p);,THANKS,2016.9.18,
展开阅读全文