Tehtäväsi on toteuttaa oma tehokas tietorakenne kääntölista, joka tarjoaa seuraavat toiminnot:
- Lisää alkio listan loppuun
- Palauta ja poista alkio listan lopusta
- Lisää alkio listan alkuun
- Palauta ja poista alkio listan alusta
- Käännä listan sisältö
Tietorakenteen jokaisen operaation tulee olla O(1)-aikainen. Voit olettaa, että jokainen alkio on kokonaisluku väliltä 1 \dots 10^9.
Python
Toteuta tiedostoon fliplist.py luokka FlipList seuraavan mallin mukaisesti.
class FlipList:
def push_last(self,x):
# TODO
def push_first(self,x):
# TODO
def pop_last(self):
# TODO
def pop_first(self):
# TODO
def flip(self):
# TODO
if __name__ == "__main__":
f = FlipList()
f.push_last(1)
f.push_last(2)
f.push_last(3)
print(f.pop_first()) # 1
f.flip()
print(f.pop_first()) # 3
Java
Toteuta tiedostoon FlipList.java luokka FlipList seuraavan mallin mukaisesti.
public class FlipList {
public void pushLast(int x) {
// TODO
}
public void pushFirst(int x) {
// TODO
}
public int popLast() {
// TODO
}
public int popFirst() {
// TODO
}
public void flip() {
// TODO
}
public static void main(String[] args) {
FlipList f = new FlipList();
f.pushLast(1);
f.pushLast(2);
f.pushLast(3);
System.out.println(f.popFirst()); // 1
f.flip();
System.out.println(f.popFirst()); // 3
}
}
