class Node : def __init__(self, nytt) : self._innhold = nytt self._neste = None def settNeste (self, ny) : self._neste = ny def neste (self) : return self._neste def hentData (self) : return self._innhold class Lenkeliste : def __init__(self) : self._lliste = None self._ANTALL = 0 def push(self, innhold): ny = Node(innhold) ny.settNeste(self._lliste) self._lliste = ny self._ANTALL += 1 def pop(self): ut = self._lliste.hentData() self._lliste = self._lliste.neste() self._ANTALL -= 1 return ut def ikkeTom(self): return self._lliste is not None # alternativt: return Lenkeliste.ANTALL == 0 def finn(self, innh): node = self._lliste funnet = False returverdi = None while node != None and not funnet: if node._hentData() == innh: # det vi leter etter # Her må brukeren av klassen selv presisere == ved å definere __equ__ funnet = True # løkka vil terminere returverdi = node._hentData() else: node = node.neste() # hvis vi leter etter noe som ikke finnes, blir denne None tilslutt og løkka terminerer return returverdi def lag_innholdsliste(self): # returnerer ei liste (list) av nodenes innhold # Hvis vi skal bruke pop() til å hente ut data, må vi ta vare på lista og antall noder listekopi = self._lliste ant = self._ANTALL # fordi pop() minker antallet returliste = [] while self.ikkeTom(): returliste.append(self.pop()) ANTALL = ant self._lliste = listekopi # gjenoppretter lista return returliste listeA = Lenkeliste() for tegn in 'ABCDEFG': listeA.push(tegn) for innh in listeA.lag_innholdsliste(): print(innh) while listeA.ikkeTom(): print(listeA.pop()) listeB = Lenkeliste() for tekst in ["snart", "over", "er", "vinteren", "håper"]: listeB.push(tekst) while listeB.ikkeTom(): print(listeB.pop())