CSES - Kääntölista

Tehtäväsi on toteuttaa listarakenne, jossa voi lisätä tehokkaasti alkion listan alkuun ja loppuun sekä kääntää listan sisällön ympäri.

Toteuta tiedostoon fliplist.py luokka FlipList, joka sisältää seuraavat metodit:

  • add_first(x): lisää alkio x listan alkuun
  • add_last(x): lisää alkio x listan loppuun
  • flip(): käännä ympäri listan sisältö

Kaikkien yllä olevien metodin tulee toimia tehokkaasti. Lisäksi metodin __repr__ tulee palauttaa listan sisältö merkkijonona alla olevan esimerkin mukaisesti.

class FlipList:
    def __init__(self):
        # TODO

    def __repr__(self):
        # TODO

    def add_first(self, x):
        # TODO

    def add_last(self, x):
        # TODO

    def flip(self):
        # TODO

if __name__ == "__main__":
    numbers = FlipList()

    numbers.add_last(1)
    numbers.add_last(2)
    numbers.add_last(3)
    print(numbers) # [1, 2, 3]

    numbers.add_first(4)
    print(numbers) # [4, 1, 2, 3]

    numbers.flip()
    print(numbers) # [3, 2, 1, 4]

    numbers.add_last(5)
    print(numbers) # [3, 2, 1, 4, 5]