数据结构:双向链表(六)删除元素
双向链表的操作
remove(item)删除链表中的元素
思路:1、需要循环遍历,循环条件为cur != None;同时需要判断cur.item等不等于item,等于进入循环,不等于移动指针,cur=cur.next
2、当删除元素对于当前cur指向时候,分情况考虑
a、第一个元素是要删除的元素,需要将self.__head=cur.next,同时应该讲第二个节点向前指向None,即cur.next.prev=None
b、当删除元素在中间的时候,我们应该 cur.next.prev=cur.prev以及cur.prev.next=cur.next
c、特殊情况当元素在尾部时,cur.next.prev没有意义,需要判断一下cur.next有没有,有是在中间,需要cur.next.prev=cur.prev,没有直接跳过
class DList(object): def __init__(self): self.__head=None def remove(self,item): cur=self._head while cur != None: if cur.item == item : if cur==self._head: self._head=cur.next cur.next.prev=None cur.prev.next=cur.next if cur.next: cur.next.prev=cur.prev else: cur=cur.next