Untitled
unknown
plain_text
3 years ago
4.6 kB
9
Indexable
from typing import Any
class ListaWpis:
wart: Any
nast: 'ListaWpis'
poprz: 'ListaWpis'
def __init__(self, wart: Any, nast: 'ListaWpis' = None, poprz: 'ListaWpis' = None):
self.wart = wart
self.nast = nast
self.poprz = poprz
def dodaj_po_nim(self, wart: Any) -> None:
node = ListaWpis(wart)
if self.nast is self:
self.nast = node
node.poprz = self
return None
if self.nast is None:
self.nast = node
node.poprz = self
return None
temp = self.nast
self.nast = node
node.nast = temp
temp.poprz = node
node.poprz = self
def dodaj_przed_nim(self, wart: Any) -> None:
node = ListaWpis(wart)
if self.poprz is self:
print("Nie można dodać nic przed wartownikiem")
return None
temp = self.poprz
temp.nast = node
node.nast = self
self.poprz = node
node.poprz = temp
class Lista_2k_1w:
wartownik: ListaWpis(None)
def __init__(self):
self.wartownik = ListaWpis(None)
self.wartownik.poprz = self.wartownik
self.wartownik.nast = self.wartownik
def druku(self) -> None:
if self.wartownik.nast is self.wartownik:
print("Lista jest pusta")
return None
wskaznik = self.wartownik.nast
drukValue = ''
while wskaznik is not None:
if wskaznik.nast is None:
drukValue += f'{wskaznik.wart} '
else:
drukValue += f'{wskaznik.wart}; '
wskaznik = wskaznik.nast
print(drukValue)
def pobierz_el(self, idx: int) -> ListaWpis:
if self.wartownik.nast is self.wartownik:
print("Lista jest pusta")
return None
licznik = 0
if idx >= 0:
wskaznik = self.wartownik.nast
while wskaznik is not None:
if licznik == idx:
return wskaznik
licznik += 1
wskaznik = wskaznik.nast
licznik = -1
wskaznik = self.ostatni_el()
while wskaznik is not self.wartownik:
if licznik == idx:
return wskaznik
licznik -= 1
wskaznik = wskaznik.poprz
def ostatni_el(self) -> ListaWpis:
if self.wartownik.nast is self.wartownik:
return self.wartownik
wskaznik = self.wartownik.nast
while wskaznik.nast is not None:
wskaznik = wskaznik.nast
return wskaznik
def pierwszy_el(self) -> 'ListaWpis':
return self.wartownik.nast
def co_drugi(self) -> 'Lista_2k_1w':
nowalista = Lista_2k_1w()
if self.wartownik.nast is self.wartownik:
print("Lista jest pusta")
return self.wartownik
wskaznik = self.wartownik.nast
licznik = 0
while wskaznik is not None:
if licznik % 2 == 0:
nowalista.ostatni_el().dodaj_po_nim(wskaznik.wart)
licznik += 1
wskaznik = wskaznik.nast
return nowalista
def wyszukaj(self, wart: Any) -> ListaWpis:
if self.wartownik.nast is self.wartownik:
print("Lista jest pusta")
return self.wartownik
wskaznik = self.wartownik.nast
while wskaznik is not None:
if wskaznik.wart == wart:
return wart
wskaznik = wskaznik.nast
return None
def print_w_tyl(self):
if self.wartownik.nast is self.wartownik:
print("Lista jest pusta")
return self.wartownik
wskaznik = self.ostatni_el()
prinValue = ''
while wskaznik is not self.wartownik:
if wskaznik.poprz is self.wartownik:
prinValue += f'{wskaznik.wart} '
else:
prinValue += f'{wskaznik.wart}; '
wskaznik = wskaznik.poprz
print(prinValue)
lista = Lista_2k_1w()
lista.ostatni_el().dodaj_po_nim('4')
lista.ostatni_el().dodaj_po_nim('71')
lista.ostatni_el().dodaj_po_nim('14')
lista.ostatni_el().dodaj_po_nim('11')
lista.ostatni_el().dodaj_po_nim('2')
lista.ostatni_el().dodaj_po_nim('1')
lista.pierwszy_el().dodaj_przed_nim('3')
lista.ostatni_el().dodaj_przed_nim('143')
Editor is loading...