import java.util.Scanner;
class Deque {
private class Node {
Node prev;
Node next;
int x;
Node() {
prev = null;
next = null;
x = 0;
}
Node(Node a, Node b, int c) {
prev = a;
next = b;
x = c;
}
}
;
Node Front = null;
Node Back = null;
int Size = 0;
int size() {
return Size;
}
void push_back(int p) {
if (Size == 0) {
Node NewNode = new Node(Back, Front, p);
Front = NewNode;
Back = NewNode;
} else {
Node NewNode = new Node(null, Back, p);
Back.prev = NewNode;
Back = NewNode;
}
Size++;
}
void push_front(int p) {
if (Size == 0) {
Node NewNode = new Node(Back, Front, p);
Front = NewNode;
Back = NewNode;
} else {
Node NewNode = new Node(Front, null, p);
Front.next = NewNode;
Front = NewNode;
}
Size++;
}
int back() {
if (Size != 0) {
return Back.x;
} else {
return 0;
}
}
int front() {
if (Size != 0) {
return Front.x;
} else {
return 0;
}
}
int pop_front() {
if (Size != 0) {
int x = Front.x;
Node NewNode = Front.prev;
Front = NewNode;
Size--;
return x;
} else {
return 0;
}
}
int pop_back() {
if (Size != 0) {
int x = Back.x;
Node NewNode = Back.next;
Back = NewNode;
Size--;
return x;
} else {
return 0;
}
}
void clear() {
while (Size > 0) {
Node NewNode = Front.prev;
Front = NewNode;
Size--;
}
Front = null;
Back = null;
}
public static void main
(String[] args
) { Deque deque = new Deque();
Scanner scanner
= new Scanner
(System.
in); System.
out.
println("enter your command"); String command
= scanner.
nextLine();
while (!command.equals("exit")) {
if (command.equals("push_back")) {
int v = scanner.nextInt();
deque.push_back(v);
} else if (command.equals("push_front")) {
int v = scanner.nextInt();
deque.push_front(v);
} else if (command.equals("front")) {
if (deque.size() > 0) {
System.
out.
println(deque.
front()); } else {
System.
out.
println("error\n"); }
} else if (command.equals("back")) {
if (deque.size() > 0) {
System.
out.
println(deque.
back()); } else {
System.
out.
println("error\n"); }
} else if (command.equals("size")) {
System.
out.
println(deque.
size()); } else if (command.equals("pop_front")) {
if (deque.size() > 0) {
System.
out.
println(deque.
pop_front()); } else {
System.
out.
println("error\n"); }
} else if (command.equals("pop_back")) {
if (deque.size() > 0) {
System.
out.
println(deque.
pop_back()); } else {
System.
out.
println("error\n"); }
} else if (command.equals("clear")) {
deque.clear();
}
command = scanner.nextLine();
}
}
};
aW1wb3J0IGphdmEudXRpbC5TY2FubmVyOwoKY2xhc3MgRGVxdWUgewoKICAgIHByaXZhdGUgY2xhc3MgTm9kZSB7CiAgICAgICAgTm9kZSBwcmV2OwogICAgICAgIE5vZGUgbmV4dDsKICAgICAgICBpbnQgeDsKCiAgICAgICAgTm9kZSgpIHsKICAgICAgICAgICAgcHJldiA9IG51bGw7CiAgICAgICAgICAgIG5leHQgPSBudWxsOwogICAgICAgICAgICB4ID0gMDsKICAgICAgICB9CgogICAgICAgIE5vZGUoTm9kZSBhLCBOb2RlIGIsIGludCBjKSB7CiAgICAgICAgICAgIHByZXYgPSBhOwogICAgICAgICAgICBuZXh0ID0gYjsKICAgICAgICAgICAgeCA9IGM7CiAgICAgICAgfQogICAgfQoKICAgIDsKCiAgICBOb2RlIEZyb250ID0gbnVsbDsKICAgIE5vZGUgQmFjayA9IG51bGw7CiAgICBpbnQgU2l6ZSA9IDA7CgogICAgaW50IHNpemUoKSB7CiAgICAgICAgcmV0dXJuIFNpemU7CiAgICB9CgogICAgdm9pZCBwdXNoX2JhY2soaW50IHApIHsKICAgICAgICBpZiAoU2l6ZSA9PSAwKSB7CiAgICAgICAgICAgIE5vZGUgTmV3Tm9kZSA9IG5ldyBOb2RlKEJhY2ssIEZyb250LCBwKTsKICAgICAgICAgICAgRnJvbnQgPSBOZXdOb2RlOwogICAgICAgICAgICBCYWNrID0gTmV3Tm9kZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBOb2RlIE5ld05vZGUgPSBuZXcgTm9kZShudWxsLCBCYWNrLCBwKTsKICAgICAgICAgICAgQmFjay5wcmV2ID0gTmV3Tm9kZTsKICAgICAgICAgICAgQmFjayA9IE5ld05vZGU7CiAgICAgICAgfQogICAgICAgIFNpemUrKzsKICAgIH0KCiAgICB2b2lkIHB1c2hfZnJvbnQoaW50IHApIHsKICAgICAgICBpZiAoU2l6ZSA9PSAwKSB7CiAgICAgICAgICAgIE5vZGUgTmV3Tm9kZSA9IG5ldyBOb2RlKEJhY2ssIEZyb250LCBwKTsKICAgICAgICAgICAgRnJvbnQgPSBOZXdOb2RlOwogICAgICAgICAgICBCYWNrID0gTmV3Tm9kZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBOb2RlIE5ld05vZGUgPSBuZXcgTm9kZShGcm9udCwgbnVsbCwgcCk7CiAgICAgICAgICAgIEZyb250Lm5leHQgPSBOZXdOb2RlOwogICAgICAgICAgICBGcm9udCA9IE5ld05vZGU7CiAgICAgICAgfQogICAgICAgIFNpemUrKzsKICAgIH0KCiAgICBpbnQgYmFjaygpIHsKICAgICAgICBpZiAoU2l6ZSAhPSAwKSB7CiAgICAgICAgICAgIHJldHVybiBCYWNrLng7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIGludCBmcm9udCgpIHsKICAgICAgICBpZiAoU2l6ZSAhPSAwKSB7CiAgICAgICAgICAgIHJldHVybiBGcm9udC54OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgcG9wX2Zyb250KCkgewogICAgICAgIGlmIChTaXplICE9IDApIHsKICAgICAgICAgICAgaW50IHggPSBGcm9udC54OwogICAgICAgICAgICBOb2RlIE5ld05vZGUgPSBGcm9udC5wcmV2OwogICAgICAgICAgICBGcm9udCA9IE5ld05vZGU7CiAgICAgICAgICAgIFNpemUtLTsKICAgICAgICAgICAgcmV0dXJuIHg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIGludCBwb3BfYmFjaygpIHsKICAgICAgICBpZiAoU2l6ZSAhPSAwKSB7CiAgICAgICAgICAgIGludCB4ID0gQmFjay54OwogICAgICAgICAgICBOb2RlIE5ld05vZGUgPSBCYWNrLm5leHQ7CiAgICAgICAgICAgIEJhY2sgPSBOZXdOb2RlOwogICAgICAgICAgICBTaXplLS07CiAgICAgICAgICAgIHJldHVybiB4OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICB2b2lkIGNsZWFyKCkgewogICAgICAgIHdoaWxlIChTaXplID4gMCkgewogICAgICAgICAgICBOb2RlIE5ld05vZGUgPSBGcm9udC5wcmV2OwogICAgICAgICAgICBGcm9udCA9IE5ld05vZGU7CiAgICAgICAgICAgIFNpemUtLTsKICAgICAgICB9CiAgICAgICAgRnJvbnQgPSBudWxsOwogICAgICAgIEJhY2sgPSBudWxsOwogICAgfQoKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgRGVxdWUgZGVxdWUgPSBuZXcgRGVxdWUoKTsKICAgICAgICBTY2FubmVyIHNjYW5uZXIgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZW50ZXIgeW91ciBjb21tYW5kIik7CiAgICAgICAgU3RyaW5nIGNvbW1hbmQgPSBzY2FubmVyLm5leHRMaW5lKCk7CgogICAgICAgIHdoaWxlICghY29tbWFuZC5lcXVhbHMoImV4aXQiKSkgewogICAgICAgICAgICBpZiAoY29tbWFuZC5lcXVhbHMoInB1c2hfYmFjayIpKSB7CiAgICAgICAgICAgICAgICBpbnQgdiA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgICAgICAgICAgZGVxdWUucHVzaF9iYWNrKHYpOwogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJva1xuIik7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5lcXVhbHMoInB1c2hfZnJvbnQiKSkgewogICAgICAgICAgICAgICAgaW50IHYgPSBzY2FubmVyLm5leHRJbnQoKTsKICAgICAgICAgICAgICAgIGRlcXVlLnB1c2hfZnJvbnQodik7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9rXG4iKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmVxdWFscygiZnJvbnQiKSkgewogICAgICAgICAgICAgICAgaWYgKGRlcXVlLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGVxdWUuZnJvbnQoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZXJyb3JcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJiYWNrIikpIHsKICAgICAgICAgICAgICAgIGlmIChkZXF1ZS5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGRlcXVlLmJhY2soKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZXJyb3JcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJzaXplIikpIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihkZXF1ZS5zaXplKCkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJwb3BfZnJvbnQiKSkgewogICAgICAgICAgICAgICAgaWYgKGRlcXVlLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGVxdWUucG9wX2Zyb250KCkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVycm9yXG4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChjb21tYW5kLmVxdWFscygicG9wX2JhY2siKSkgewogICAgICAgICAgICAgICAgaWYgKGRlcXVlLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZGVxdWUucG9wX2JhY2soKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZXJyb3JcbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJjbGVhciIpKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm9rXG4iKTsKICAgICAgICAgICAgICAgIGRlcXVlLmNsZWFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29tbWFuZCA9IHNjYW5uZXIubmV4dExpbmUoKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJieWUiKTsKICAgIH0KfTs=