二重連結リストクラスを作っています。
def remove(self, item):
current=self.__head
prev=None
found=False
if(self.__size>=1):
for i in range (0,self.__size):
if(current.getData()==item):
found=True
pos=i#save the position to pop
i=self.__size#leave the loop
else:
prev=current
current=current.getNext()
if(found==True):#excute only if the item is found
if(prev==None):#first item found
if(self.__size==1):
self.__head==None
self.__tail==None
current.setNext(None)
current.setPrevious(None)
else:#size bigger than 2
self.__head==current.getNext()
current.setNext(None)
else:
if(current.getNext()==None):#last item found
self.__tail==prev
current.setPrevious(None)
prev.setNext(None)
else:
Next=current.getNext()
current.setNext(None)
current.setPrevious(None)
Next.setPrevious(prev)
prev.setNext(Next)
self.pop(pos)
self.__size-=1
これは私がこれまでに行ったことです。以下のコードを実行すると
for i in range(0, 10):
int_list2.add(i)
int_list2.remove(1)
int_list2.remove(3)
int_list2.remove(2)
int_list2.remove(0)
print(int_list2)
これらは私が得る出力です
0
1
2
3
4 3
5 4 3
6 5 4 3
7 6 5 4 3
8 7 6 5 4 3
9 8 7 6 5 4
最初の 4 行 (0~3) には何も表示されず、5 行目から 4、6 行目から 5 4 などと予想されます。
最後に欲しい 9 8 7 6 5 4
コードを修正するにはどうすればよいですか?