# Ta modul vsebuje osnovne operacije za delo z vrsto. Vrsta je
# implementirana kot krožna tabela.
# Ustvari prazno vrsto s podanim maksimalnim možnim številom elementov.
def Ustvari(maksSteviloElementov):
# Izraz [None] * m izdela tabelo z m elementi None, torej [None, None,
# ..., None]. Pythonova beseda None predstavlja 'nič'. Seveda bi lahko
# ustvarili tudi tabelo [0, 0, ..., 0], toda beseda None je za te namene
# bolj primerna.
#
# Prvi element vrnjene tabele je tabela, ki bo hranila elemente vrste,
# drugi element je spremenljivka z (indeks začetnega elementa vrste v
# tabeli), tretji pa spremenljivka k (indeks končnega elementa vrste v
# tabeli).
podatki = [None] * (maksSteviloElementov + 1)
return [podatki, 0, 0]
# Doda element v vrsto.
def Dodaj(vrsta, element):
podatki = vrsta[0]
# Element shranimo na indeks k.
podatki[vrsta[2]] = element
# Posodobimo spremenljivko k.
vrsta[2] = (vrsta[2] + 1) % len(vrsta[0])
# Odvzame element iz vrste in vrne odvzeti element.
def Odvzemi(vrsta):
# Posodobimo spremenljivko z.
vrsta[1] = (vrsta[1] + 1) % len(vrsta[0])
# Vrne True natanko v primeru, če je vrsta prazna.
def JePrazna(vrsta):
return (vrsta[1] == vrsta[2])
# Pomožna funkcija, ki vrne tabelo z dejanskimi elementi vrste.
def Elementi(vrsta):
podatki = vrsta[0]
elementi = []
# Sprehodimo se po indeksih od z do k (upoštevamo, da je z lahko tudi
# večji od k) in dodajamo elemente v tabelo elementi.
i = vrsta[1]
while i != vrsta[2]:
elementi.append(podatki[i])
i = (i + 1) % len(podatki)
return elementi
# Pomožna funkcija za izpis elementov vrste.
def Izpisi(vrsta):
print(Elementi(vrsta))
# Ta funkcija se izvede, če datoteko poženemo kot samostojen program.
def main():
# Recimo, da lahko vrsta vsebuje največ 5 elementov.
vrsta = Ustvari(5)
print('V vrsto dodamo M, I, Z, A, R ...')
Dodaj(vrsta, 'M')
Dodaj(vrsta, 'I')
Dodaj(vrsta, 'Z')
Dodaj(vrsta, 'A')
Dodaj(vrsta, 'R')
Izpisi(vrsta)
print('Odstranimo dva elementa ...')
Odvzemi(vrsta)
Odvzemi(vrsta)
Izpisi(vrsta)
print('Dodamo elementa J in A ...')
Dodaj(vrsta, 'J')
Dodaj(vrsta, 'A')
Izpisi(vrsta)
if JePrazna(vrsta):
print('Vrsta je prazna.')
else:
print('Vrsta ni prazna.')
print('Vrsto izpraznimo ...')
Odvzemi(vrsta)
Odvzemi(vrsta)
Odvzemi(vrsta)
Odvzemi(vrsta)
Odvzemi(vrsta)
Izpisi(vrsta)
if JePrazna(vrsta):
print('Vrsta je prazna.')
else:
print('Vrsta ni prazna.')
if __name__ == '__main__':
main()