Найти - Пользователи
Полная версия: Сохранение узлов связного списка в файл и его чтение
Начало » Python для новичков » Сохранение узлов связного списка в файл и его чтение
1
Renfri
Здравствуйте. Выполняю задание по созданию связного списка и меня возникло пару проблем:
1. Как сохранить узлы списка в файл (в байтовой форме) и реализовать чтение этого файла? (без первого узла, который None)
2. Как переделать этот список из двусвязного циклического в односвязный?
class Node:
    def __init__(self, name, year, cse):
        self.name = name
        self.year = year
        self.cse = cse
        self.next = None
        self.prev = None
class Sentinel_DLL:
    def __init__(self):
        self.sentinel = Node(None, None, None)
        self.sentinel.next = self.sentinel
        self.sentinel.prev = self.sentinel
    def first_node(self):
        if self.sentinel.next == self.sentinel:
            return None
        else:
            return self.sentinel.next
    def insert_after(self, x, name, year, cse):
        y = Node(name, year, cse)
        y.prev = x
        y.next = x.next
        x.next = y
        y.next.prev = y
    def append(self, name, year, cse):
        last_node = self.sentinel.prev
        self.insert_after(last_node, name, year, cse)
    def delete(self, x):
        x.prev.next = x.next
    def find(self, name, year, cse):
        self.sentinel.name = name
        self.sentinel.year = year
        self.sentinel.cse = cse
        x = self.first_node()
        while x.name != name:
            x = x.next
        self.sentinel.name = None
        self.sentinel.year = None
        self.sentinel.cse = None
        if x == self.sentinel:
            return None
        else:
            return x
L = Sentinel_DLL()
L.append(None, None, None)
L.append('Dima', 1995, 204)
L.append('Vlad', 1995, 207)
L.append('Eva', 1000, 15)
L.append('Pavel', 1568, 158)
node = L.find(None, None, None)
node = node.next
print(node.name)
s0rg
1. pickle
2. Двусвязный список, отличается от односвязного, только наличием поля prev
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB