双向链表的操作
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