リンクリストをPythonで実装しました。要素を追加してリストを印刷します。 しかし、私は削除方法に問題があります。私は)(私のクラスの細胞である、ここでリストPython 3.リンクリストからアイテムを削除
から最後の項目を削除する:新しいCellを追加するための方法が良い作品
class LinkedList():
def __init__(self):
self.top = None
self.last = None
self.length = 0
:ここ
class Cell():
def __init__(self, value = None, next = None):
self.value = value
self.next = next
は私のクラスLinkedListの()です:
def add (self, value, position = None):
newCell = Cell(value, None)
self.length += 1
if position is None or position >= self.length:
if self.top == None:
self.last = self.top = Cell(value, None)
else:
self.last.next = self.last = Cell(value, None)
elif position == 1:
self.top = Cell (value, self.top)
elif position > 1:
afterMe = self.top
i = 1
for i in range(position-2):
afterMe = afterMe.next
newCell.next = afterMe.next
afterMe.next = newCell
toStringメソッドは、()も良い作品:
def __str__(self):
linkedList = ''
cell = self.top
if self.top is None:
return 'Linked list is empty'
for i in range(self.length):
if cell == self.last:
linkedList += (str(cell.value))
else:
linkedList += (str(cell.value)+ ', ')
cell = cell.next
return linkedList
そしてここでは、エラーを作成し、私のdeleteメソッドです:私はきちんと最後のセルを削除するには、コードを変更する必要がありますか、答えてください
numbers = LinkedList()
numbers.add(55)
numbers.add(75)
numbers.add(65)
print(numbers) # 55, 75, 65
numbers.add(3,2)
numbers.add (40,3)
print(numbers) # 55, 3, 40, 75, 65
numbers.delete()
print(numbers) # 55, 3, 40, 75
numbers.delete(40)
print(numbers)
''' returns error:
Traceback (most recent call last):
File "C:/Users/demin.va/Documents/Dropbox/Programming/Алгоритмы/связные списки.py", line 105, in <module>
print(numbers)
File "C:/Users/demin.va/Documents/Dropbox/Programming/Алгоритмы/связные списки.py", line 72, in __str__
linkedList += (str(cell.value)+ ', ')
AttributeError: 'NoneType' object has no attribute 'value'
'''
:ここ
def delete(self, value = None): # want to delete last cell
if self.top == None:
return None
current = self.top
if value is None:
self.length -= 1
while (current.next != self.last):
current = current.next
self.last = current
current.next = None
else:
while (current.next.value != value):
current = current.next
if current == self.last:
print ('no such value')
return
current.next = current.next.next
どのようにコードの動作とエラーになりますまたは異なる位置からですか?
最後のセルではなく、値のあるセルを削除したいのですが?たとえば数字です。削除(40)、値40のセルを削除したい –
上記のアップデートをご覧ください。 – 2ps