Untitled
user_1100393
python
3 years ago
3.7 kB
6
Indexable
from typing import Any class ListaWpis: def __init__(self, wart: Any, nast: 'ListaWpis' = None, poprz: 'ListaWpis' = None): self.wart = wart self.poprz = poprz self.nast = nast def dodaj_po_nim(self, wart: Any): temp = ListaWpis(wart) if self.nast == self: temp.poprz = self temp.nast = None self.nast = temp return None if self.nast is None: temp.poprz = self temp.nast = None self.nast = temp return None temp.poprz = self temp.nast = self.nast self.nast.poprz = temp self.nast = temp def dodaj_przed_nim(self, wart: Any): if self.nast == self: # wartownik/pusta lista self.dodaj_po_nim(wart) # nie da sie dodac przed wartownikiem return None temp = ListaWpis(wart) temp.poprz = self.poprz temp.nast = self self.poprz.nast = temp self.poprz = temp class Lista_2k_1w: def __init__(self): self.wartow = ListaWpis('wartow') self.wartow.nast = self.wartow self.wartow.poprz = self.wartow def ostatni_el(self) -> ListaWpis: if self.wartow.nast == self.wartow: return self.wartow else: koniec = self.wartow while koniec.nast is not None: koniec = koniec.nast return koniec def pierwszy_el(self) -> ListaWpis: return self.wartow.nast def pobierz_el(self, idx: int) -> ListaWpis: if idx == 0: return self.pierwszy_el().wart if idx>0: temp = self.pierwszy_el() while idx>1: idx-=1 temp = temp.nast return temp.wart if idx<0: temp = self.ostatni_el() while idx<-1: idx+=1 temp = temp.poprz return temp.wart def co_drugi(self) -> 'Lista_2k_1w': temp = Lista_2k_1w() if self.wartow.nast == self.wartow: return temp codrugi = 0 szukane = self.pierwszy_el() while szukane: if codrugi % 2 == 1: codrugi += 1 szukane = szukane.nast continue temp.ostatni_el().dodaj_po_nim(szukane.wart) codrugi +=1 szukane = szukane.nast return temp def wyszukaj(self, wart: Any) -> ListaWpis: if self.wartow.nast == self.wartow: return None temp = self.pierwszy_el() while temp: if temp.wart == wart: return temp temp = temp.nast return None def print_w_tyl(self): temp = self.ostatni_el() if self.wartow.nast == self.wartow: print('Lista jest pusta') drukowanie = '' while temp != self.wartow: drukowanie += temp.wart if temp != self.wartow.nast: drukowanie += '‘;‘' temp = temp.poprz print(drukowanie) lista = Lista_2k_1w() lista.ostatni_el().dodaj_po_nim('3') lista.ostatni_el().dodaj_po_nim('4') lista.ostatni_el().dodaj_przed_nim('0') lista.ostatni_el().dodaj_po_nim('34') lista.ostatni_el().dodaj_po_nim('5') lista.ostatni_el().dodaj_po_nim('6') lista.ostatni_el().dodaj_po_nim('7') lista.ostatni_el().dodaj_po_nim('11') lista.ostatni_el().dodaj_po_nim('8') lista.print_w_tyl() lista.wyszukaj('3') # print(lista.pobierz_el(-4)) # lista2 = lista.co_drugi() # lista2.print_w_tyl()
Editor is loading...