Untitled
unknown
plain_text
3 years ago
4.6 kB
7
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...