class Node:
def __init__(self, value = None, next = None):
self.value = value
self.next = next
class LinkedList:
def __init__(self):
self.first = None
self.last = None
self.length = 0
def __str__(self):
if self.first != None:
current = self.first
out = 'LinkedList [\n' +str(current.value) +'\n'
while current.next != None:
current = current.next
out += str(current.value) + '\n'
return out + ']'
return 'LinkedList []'
def clear(self):
self.__init__()
def add(self, x):
self.length+=1
if self.first == None:
#self.first и self.last будут указывать на одну область памяти
self.last = self.first = Node(x, None)
else:
#здесь, уже на разные, т.к. произошло присваивание
self.last.next = self.last = Node(x, None)
L = LinkedList()
L.add(1)
L.add(2)
L.add(3)
print(L)
Y2xhc3MgTm9kZToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSA9IE5vbmUsIG5leHQgPSBOb25lKToKICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKICAgICAgICBzZWxmLm5leHQgPSBuZXh0CgpjbGFzcyBMaW5rZWRMaXN0OgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuZmlyc3QgPSBOb25lCiAgICAgICAgc2VsZi5sYXN0ID0gTm9uZQogICAgICAgIHNlbGYubGVuZ3RoID0gMAoKICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgIGlmIHNlbGYuZmlyc3QgIT0gTm9uZToKICAgICAgICAgICAgY3VycmVudCA9IHNlbGYuZmlyc3QKICAgICAgICAgICAgb3V0ID0gJ0xpbmtlZExpc3QgW1xuJyArc3RyKGN1cnJlbnQudmFsdWUpICsnXG4nCiAgICAgICAgICAgIHdoaWxlIGN1cnJlbnQubmV4dCAhPSBOb25lOgogICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dAogICAgICAgICAgICAgICAgb3V0ICs9IHN0cihjdXJyZW50LnZhbHVlKSArICdcbicKICAgICAgICAgICAgcmV0dXJuIG91dCArICddJwogICAgICAgIHJldHVybiAnTGlua2VkTGlzdCBbXScKCiAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgc2VsZi5fX2luaXRfXygpCgogICAgZGVmIGFkZChzZWxmLCB4KToKICAgICAgICAgICAgc2VsZi5sZW5ndGgrPTEKICAgICAgICAgICAgaWYgc2VsZi5maXJzdCA9PSBOb25lOgogICAgICAgICAgICAgICAgI3NlbGYuZmlyc3Qg0Lggc2VsZi5sYXN0INCx0YPQtNGD0YIg0YPQutCw0LfRi9Cy0LDRgtGMINC90LAg0L7QtNC90YMg0L7QsdC70LDRgdGC0Ywg0L/QsNC80Y/RgtC4CiAgICAgICAgICAgICAgICBzZWxmLmxhc3QgPSBzZWxmLmZpcnN0ID0gTm9kZSh4LCBOb25lKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgI9C30LTQtdGB0YwsINGD0LbQtSDQvdCwINGA0LDQt9C90YvQtSwg0YIu0LouINC/0YDQvtC40LfQvtGI0LvQviDQv9GA0LjRgdCy0LDQuNCy0LDQvdC40LUKICAgICAgICAgICAgICAgIHNlbGYubGFzdC5uZXh0ID0gc2VsZi5sYXN0ID0gTm9kZSh4LCBOb25lKQoKCkwgPSBMaW5rZWRMaXN0KCkKTC5hZGQoMSkKTC5hZGQoMikKTC5hZGQoMykKcHJpbnQoTCk=