数据结构:双向链表(六)删除元素

双向链表的操作

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

  

posted @ 2020-05-15 15:37  Roronoa-Zoro  阅读(614)  评论(0编辑  收藏  举报