単純なリンクリストからの削除
15197 ワード
リンクされたリストからノードを削除するのは簡単ですが、アカウントを作成する必要があります.
ステップ1 :リストが空の場合、メッセージとリターンを出力します.
def delete(self, key):
# If the list is empty
if self.head is None:
print('Deletion Error: The list is empty.')
return
ステップ2:ヘッドがキーを保持している場合は、ヘッドの次のノードに頭を割り当てて頭を削除します.
# If the key is in head
if self.head.data == key:
self.head = self.head.next
return
手順3 :リンクリスト内の最初のキーの出現を見つけます.
# Find position of first occurrence of the key
current = self.head
while current:
if current.data == key:
break
previous = current
current = current.next
キーが見つかった場合、前のノードをキーの次のノードにポイントします.エラーメッセージを出力します.
# If the key was not found
if current is None:
print('Deletion Error: Key not found.')
else:
previous.next = current.next
手順4:コードのサンプルテストケースをチェックします.
完全なコードは以下の通りです.
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def printList(self):
temp = self.head
if not temp:
print('List is empty.')
return
else:
print('Start:', end=' ')
while temp:
print(temp.data, end=' -> ')
temp = temp.next
print('end.')
def insert(self, data):
new_node = Node(data)
# If the linked list is empty
if self.head is None:
self.head = new_node
# If the data is smaller than the head
elif self.head.data >= new_node.data:
new_node.next = self.head
self.head = new_node
else:
# Locate the node before the insertion point
current = self.head
while current.next and new_node.data > current.next.data:
current = current.next
# Insertion
new_node.next = current.next
current.next = new_node
def delete(self, key):
# If the list is empty
if self.head is None:
print('Deletion Error: The list is empty.')
return
# If the key is in head
if self.head.data == key:
self.head = self.head.next
return
# Find position of first occurrence of the key
current = self.head
while current:
if current.data == key:
break
previous = current
current = current.next
# If the key was not found
if current is None:
print('Deletion Error: Key not found.')
else:
previous.next = current.next
if __name__=='__main__':
# Create an object
LL = LinkedList()
print('')
# Insert some nodes
LL.insert(10)
LL.insert(12)
LL.insert(8)
LL.insert(11)
LL.insert(10)
LL.printList()
LL.delete(7)
LL.delete(8)
LL.delete(13)
LL.printList()
その記事を読んでくれてありがとう.あなたのフィードバックを残してください.😄
参考文献
Reference
この問題について(単純なリンクリストからの削除), 我々は、より多くの情報をここで見つけました https://dev.to/hurayraiit/deletion-from-a-simple-linked-list-using-python-1045テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol