Verižni seznam (tudi povezani seznam, linearni seznam) II

Verižni seznam (tudi povezani seznam, linearni seznam) II

Avtor: Matija Lokar

Grafična predstavitev

(slide2.jpg)

Še nekaj primerov

  • V obstoječo verigo treh vozlov na začetek dodaj nov vozel
  • Sedaj pa še na konec
  • Sestavi metodo, ki izpiše vsebino vseh vozlov v verigi

    • def izpisi(prvi) :
    • pom = prvi
    • while pom != None :
    • print(pom.podatek)
    • pom = pom.naslednji

Razred Vozel - metode

def nastaviPodatek(self, pod):
  '''Vozlu spremeni podatek na pod'''
  self.podatek = pod

(slide10.jpg)

def vrniPodatek(self):
  ''' vrne podatek, ki je v vozlu'''
  return self.podatek

nastaviNasled, vrniNasled

def nastaviNasled(self, mojNasled) :
  '''Vozlu nastavi novega naslednika'''
  self.naslednji = mojNasled

(slide11.jpg)

def vrniNasled(self):
  ''' Vrne kazalec na naslednji vozel '''
  return self.naslednji

(slide12 .jpg)
Metode razreda Vozel

Primeri od prej

  • Naredimo primere od prej, a tokrat "zares" (z uporabo metod)
  • 1. primer

    • Ustvarimo tri vozle in jih povežimo med sabo
    • Izpišimo vsebino vseh treh, če poznamo referenco le na prvega
    • Spremeni vsebino prvega
    • Spremeni vsebino tretjega
  • 2.primer

    • V obstoječo verigo treh vozlov na začetek dodaj nov vozel
    • Sedaj pa še na konec
  • Sestavi metodo, ki izpiše vsebino vseh vozlov v verigi

NAJPOMEMBNEJŠI DEL PRI DELU Z VERIGAMI VOZLOV

pom = pom.vrniNasled()

Primeri od prej

  • Naredimo primere od prej, a tokrat "zares" (z uporabo metod)
  • 1. primer

    • Ustvarimo tri vozle in jih povežimo med sabo
    • Izpišimo vsebino vseh treh, če poznamo referenco le na prvega
    • Spremeni vsebino prvega
    • Spremeni vsebino tretjega
  • 2.primer

    • V obstoječo verigo treh vozlov na začetek dodaj nov vozel
    • Sedaj pa še na konec
  • Sestavi metodo, ki izpiše vsebino vseh vozlov v verigi

Koda

import Vozel

prvi = Vozel.Vozel("abc")
drugi = Vozel.Vozel("123", prvi)
tretji = Vozel.Vozel(33,drugi)

zacetek = tretji

print('Peš')
print(zacetek.vrniPodatek())
print(zacetek.vrniNasled().vrniPodatek())
print(zacetek.vrniNasled().vrniNasled().vrniPodatek())

print('Peš, a s pomočnikom')
pomoc = zacetek
print(pomoc.vrniPodatek())
pomoc = pomoc.vrniNasled()
print(pomoc.vrniPodatek())
pomoc = pomoc.vrniNasled()
print(pomoc.vrniPodatek())

def izpisi(prvi) :
    pom = prvi
    while pom != None :
        print(pom.vrniPodatek())
        pom = pom.vrniNasled()

print('Z metodo:')
izpisi(zacetek)

Še en zgled

  • Sestavi funkcijo sestaviVerigo(n), ki sestavi verigo n vozlov z vrednostmi od ena do n.
  • Funkcija vrne referenco (kazalec) na prvi vozel v verigi.
  • Vozel z vrednostjo 1 naj bo na začetku, vozel z vrednostjo n pa na koncu verige - povezani morajo torej biti kot 1->2->3->...->(n-1)->n.
  • Dvakrat zapored izpiši to verigo!

In še en par

  • Funkcija izpisiSode(prvi), ki izpiše vse sode vrednosti v verigi vozlov. Kot parameter sprejme kazalec na prvi vozel v tej verigi.
  • Funkcija stakni(prvaVeriga, drugaVeriga), ki doda drugo verigo na konec prve, ter kot rezultat vrne kazalec na prvi vozel v novi verigi.
0%
0%