Skip to content
Snippets Groups Projects
Commit b4f56ff7 authored by Martin Mareš's avatar Martin Mareš
Browse files

Příklady na spojové seznamy

parent ff001845
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python3
# Obousměrné spojové seznamy s předáváním na konec
import sys
class MyNode:
def __init__(self, x):
# Každy prvek si pamatuje hodnotu a následníka
self.value = x
self.next = None
class MyList:
def __init__(self):
# Seznam si pamatuje odkaz na svůj první a poslední prvek
self.first = None
self.last = None
def append(self, x):
"""Zapojí prvek se zadanou hodnotu na konec seznamu."""
n = MyNode(x)
if self.last:
self.last.next = n
else:
self.first = n
self.last = n
def print(self):
n = self.first
while n:
print(n.value)
n = n.next
l = MyList()
for a in sys.stdin:
l.append(int(a))
l.print()
#!/usr/bin/python3
# Obousměrné spojové seznamy s předáváním na začátek
import sys
class MyNode:
def __init__(self, x):
# Každy prvek si pamatuje hodnotu a následníka
self.value = x
self.next = None
class MyList:
def __init__(self):
# Seznam si pamatuje odkaz na svůj první prvek
self.first = None
def prepend(self, x):
"""Zapojí prvek se zadanou hodnotu na začátek seznamu."""
n = MyNode(x)
n.next = self.first
self.first = n
def print(self):
n = self.first
while n:
print(n.value)
n = n.next
l = MyList()
for a in sys.stdin:
l.prepend(int(a))
l.print()
#!/usr/bin/python3
# Obousměrné spojové seznamy s hlavou
import sys
class MyNode:
def __init__(self, x):
# Prvek si pamatuje hodnotu a odkaz na předchůdce i následníka
self.value = x
self.prev = None
self.next = None
class MyList:
def __init__(self):
# Seznam vždy držíme za hlavu: speciální prvek, který nenese žádnou
# užitečnou hodnotu.
self.head = MyNode(None)
self.head.prev = self.head.next = self.head
def insert_node(self, n, after):
"""Zapojí prvek n za prvek after."""
before = after.next # Pozor, before se může rovnat after
n.prev = after
n.next = before
before.prev = n
after.next = n
def prepend_node(self, n):
"""Zapojí prvek n na začátek seznamu (za hlavu)."""
self.insert_node(n, self.head)
def append_node(self, n):
"""Zapojí prvek n na konec seznamu (tedy za předchůdce hlavy)."""
self.insert_node(n, self.head.prev)
def prepend(self, x):
"""Zapojí prvek se zadanou hodnotu na začátek seznamu."""
return self.prepend_node(MyNode(x))
def append(self, x):
"""Zapojí prvek se zadanou hodnotu na konec seznamu."""
return self.append_node(MyNode(x))
def print(self):
n = self.head.next
while n != self.head:
print(n.value)
n = n.next
l = MyList()
for a in sys.stdin:
l.prepend(int(a))
l.append(int(a))
l.print()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment