Связанные списки с двунаправленными ссылками — это структуры данных, которые обычно используются в информатике и имеют различные реальные приложения. Вот несколько методов, обычно связанных с двунаправленными связанными списками, а также примеры кода:
- Вставка в начало:
Этот метод вставляет новый узел в начало связанного списка.
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def insert_at_head(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
- Вставка в хвост:
Этот метод вставляет новый узел в конец связанного списка.
class DoublyLinkedList:
def __init__(self):
self.head = None
def insert_at_tail(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
new_node.prev = current
- Удаление по значению.
Этот метод удаляет первое вхождение узла с заданным значением из связанного списка.
class DoublyLinkedList:
def __init__(self):
self.head = None
def delete_by_value(self, value):
if self.head is None:
return
current = self.head
while current:
if current.data == value:
if current.prev:
current.prev.next = current.next
else:
self.head = current.next
if current.next:
current.next.prev = current.prev
return
current = current.next
- Обход:
Этот метод обходит связанный список и печатает данные в каждом узле.
class DoublyLinkedList:
def __init__(self):
self.head = None
def traverse(self):
current = self.head
while current:
print(current.data)
current = current.next
- Обратный обход.
Этот метод обходит связанный список в обратном порядке и печатает данные в каждом узле.
class DoublyLinkedList:
def __init__(self):
self.head = None
def reverse_traverse(self):
current = self.head
while current.next:
current = current.next
while current:
print(current.data)
current = current.prev