Untitled
unknown
plain_text
2 years ago
4.2 kB
11
Indexable
from typing import Any class ListaWpis: wart: Any nast: 'ListaWpis' poprz: 'ListaWpis' def __init__(self, wart:Any, nast: 'ListaWpis' = None, poprz: 'ListaWpis' = None) -> None: self.wart = wart self.nast = nast self.poprz = poprz def dodaj_po_nim(self, wart: Any): new_node = ListaWpis(wart) temp = self.nast self.nast = new_node new_node.nast = temp temp.poprz = new_node new_node.poprz = self def dodaj_przed_nim(self, wart: Any): new_node = ListaWpis(wart) temp = self.poprz temp.nast = new_node new_node.nast = self self.poprz = new_node new_node.poprz = temp class Lista_2k_1w: wartownik: ListaWpis def __init__(self): wartownik = ListaWpis(None) self.wartownik = wartownik self.wartownik.nast = wartownik self.wartownik.poprz= wartownik def drukuj(self) -> None: if self.wartownik.nast is self.wartownik: print("Lista jest pusta") return self.wartownik wskaznik = self.wartownik.nast drukValue = '' while wskaznik is not self.wartownik: if wskaznik.nast is self.wartownik: drukValue += f'{wskaznik.wart} ' else: drukValue += f'{wskaznik.wart}; ' wskaznik = wskaznik.nast print(drukValue) def pobierz_el(self, idx: int): if self.wartownik.nast is self.wartownik: print("Lista jest pusta") return None temp = self.wartownik.nast licznik = 0 if idx >= 0: while temp.nast is not self.wartownik: if licznik == idx: return temp licznik += 1 temp = temp.nast else: licznik = -1 temp = self.ostatni_el() while temp.poprz is not self.wartownik: if licznik == idx: return temp licznik -= 1 temp = temp.poprz def ostatni_el(self): if self.wartownik.nast is self.wartownik: print("Lista jest pusta") return self.wartownik temp = self.wartownik.nast while temp.nast is not self.wartownik: temp = temp.nast return temp def pierwszy_el(self): if self.wartownik.nast is self.wartownik: return self.wartownik return self.wartownik.nast def co_drugi(self) -> 'Lista_2k_1w': if self.wartownik.nast is self.wartownik: print("Lista jest pusta") return self.wartownik new_list = Lista_2k_1w() wskaznik = self.wartownik.nast licznik = 0 while wskaznik is not self.wartownik: if licznik % 2 == 0: new_list.ostatni_el().dodaj_po_nim(wskaznik.wart) licznik += 1 wskaznik = wskaznik.nast return new_list 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.nast is not self.wartownik: if wskaznik.wart == wart: return wskaznik.wart wskaznik = wskaznik.nast return None # def KOLOKWIUM(self): # pierwszyel = self.wartownik.nast # ostatni_element = self.wartownik.nast # while ostatni_element.nast is not self.wartownik: # ostatni_element = ostatni_element.nast # # pierwszyel.nast = ostatni_element # ostatni_element.poprz = pierwszyel lista = Lista_2k_1w() lista.pierwszy_el().dodaj_przed_nim(3) lista.pierwszy_el().dodaj_po_nim(5) lista.pierwszy_el().dodaj_po_nim(8) lista.pierwszy_el().dodaj_po_nim(7) lista.pierwszy_el().dodaj_po_nim(11) lista.pierwszy_el().dodaj_po_nim(4) lista.pierwszy_el().dodaj_po_nim(12) lista.drukuj()
Editor is loading...