Pythonで二重リンクリストを作成しようとしましたが、私のLinkedList
クラスのいくつかのメソッドに問題があります。 removeFront
とremoveRear
のメソッドを削除した値を返すことができますが、これを動作させることはできません。テストリストで、ノードに値xを入力して削除しようとすると、xは返されません。Pythonの二重リンクリストでノードを削除する際の問題
私は、ノードを削除するという考えは、次のノードを前のノードに接続することによってリストから切り離すことですが、これに対する私の試みは根本的に欠陥があると感じています。
私はまたpop
メソッドを実装しようとしていますが(リスト内の特定の要素を削除するため)、どこから開始するのかはわかりません。ここに正しい方向に私を振り下ろすためのアドバイスをいただければ幸いです。ありがとうございました。
class Node:
def __init__(self,data):
self.data = data
self.next = None
self.prev = None
class LinkedList:
def __init__(self):
self.front = None
self.rear = None
def isEmpty(self):
return self.front is None and self.rear is None
def addFront(self, data):
new_node = Node(data)
if self.front is None:
self.front = new_node
self.rear = self.front
self.front.prev = None
self.rear.next = None
else:
self.front.prev = new_node
new_node.next = self.front
self.front = new_node
self.front.prev = None
def addRear(self, data):
new_node = Node(data)
if self.front is None:
self.rear = new_node
self.front = self.rear
self.front.prev = None
self.rear.next = None
else:
self.rear.next = new_node
new_node.prev = self.rear
self.rear = new_node
self.rear.next = None
def removeFront(self):
if self.isEmpty():
return None
else:
removed = self.front
self.front.prev = self.front
self.front.prev.next = None
return removed
def removeRear(self):
if self.isEmpty():
return None
else:
removed = self.rear
self.rear.prev = self.rear
self.rear.prev.next = None
return removed
def pop(self, index):
# TODO: How to implement?
pass
def size(self):
current = self.front
count = 0
while current is not None:
count += 1
current = current.next
return count
removeFront/Rearは、削除された* value *またはノード自体を返すとしますか?現在、ノードを戻しています。 – Kyle
Eek、私は本当に価値を返そうとしていました。これは問題の根本にあることが判明しました。私はそれを見落としたとは信じられません。それを指摘してくれてありがとう。 – user243253