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