Chain List - управляй списками и задачами удобно и эффективно
Chain list (цепочечный список) - это структура данных, которая представляет собой связанный список, состоящий из отдельных списков, которые соединены друг с другом. Эти подсписки образуют цепочку или последовательность элементов.
Каждый элемент в цепочечном списке содержит указатель на следующий элемент и некоторое значение. Начальный элемент указывает на начало первого подсписка, последний элемент в каждом подсписке указывает на начало следующего подсписка, и последний элемент в цепочке указывает на NULL.
Пример реализации цепочечного списка на языке Python:
class ChainListNode:
def __init__(self, value, next_chain=None):
self.value = value
self.next_chain = next_chain
class ChainList:
def __init__(self):
self.first_node = None
self.last_node = None
def is_empty(self):
return self.first_node is None
def add_node(self, value):
new_node = ChainListNode(value)
if self.is_empty():
self.first_node = self.last_node = new_node
else:
self.last_node.next_chain = new_node
self.last_node = new_node
def delete_node(self, value):
current_node = self.first_node
previous_node = None
while current_node:
if current_node.value == value:
if previous_node:
previous_node.next_chain = current_node.next_chain
if not current_node.next_chain:
self.last_node = previous_node
else:
self.first_node = current_node.next_chain
if not current_node.next_chain:
self.last_node = None
return True
previous_node = current_node
current_node = current_node.next_chain
return False
def search_node(self, value):
current_node = self.first_node
while current_node:
if current_node.value == value:
return True
current_node = current_node.next_chain
return False
def print_list(self):
current_node = self.first_node
while current_node:
print(current_node.value)
current_node = current_node.next_chain
# создадим цепочечный список и добавим в него некоторые элементы
chain_list = ChainList()
chain_list.add_node(5)
chain_list.add_node(10)
chain_list.add_node(15)
chain_list.add_node(20)
# выведем список на экран
chain_list.print_list()
# удалим элемент со значением 10 из списка и выведем его на экран
chain_list.delete_node(10)
chain_list.print_list()
# проверим наличие элемента со значением 15 в списке
print(chain_list.search_node(15)) # вернет True
# проверим наличие элемента со значением 30 в списке
print(chain_list.search_node(30)) # вернет False