#include <bits/stdc++.h>
#include <string>
using namespace std;
//ifstream f("data2.in");
//0 means not reversed
//1 means reversed
int reverseflag = 0;
struct node{
int number;
node *next;
};
node *initNode(int number)
{
node *head = new node;
head->next = NULL;
head->number = number;
return head;
}
void InsertFront(node *head, int number)
{
node *cur = head;
node *tmp = new node;
cur = cur->next;
head->next = tmp;
tmp->next = cur;
tmp->number = number;
}
void InsertBack(int number, node *head)
{
node *cur = head;
node *last = new node;
if(cur!=0)
{
while(cur->next!=NULL)
{
cur = cur->next;
}
cur->next = last;
last->next = NULL;
last->number = number;
}
}
void PrintLinkedList(node *head)
{
if(head)
{
node *cur = head;
while(cur != NULL)
{
cout << cur->number << " ";
cur=cur->next;
}
cout << endl;
}
else
cout << "List is empty ..." << endl;
}
bool RemoveFront(node *head, int &a)
{
if(head->next==NULL && head->number==-1)
{
cout << "No job for Ada?" << endl;
return false;
}
else
{
node *tmp = head->next;
a = tmp->number;
node *cur = tmp->next;
head->next = cur;
free(tmp);
return true;
}
}
bool RemoveBack(node *head, int &a)
{
node *temp;
node *cur = head;
if(head->next == NULL && head->number == -1)
{
cout << "No job for Ada?" << endl;
return false;
}
else
{
if(cur != 0)
{
//find last
while(cur->next != NULL)
{
temp = cur;
cur = cur->next;
}
a = cur->number;
temp->next = 0;
free(cur);
}
return true;
}
}
void ReverseList()
{
if(reverseflag==1)
reverseflag = 0;
else
reverseflag = 1;
}
int main ()
{
//TODO test all input data
int num=-1;
int Qnums=0;
//keep track of node with number -1 -> it cannot be deleted !!!!
node *n = initNode(-1);
int a = 0;
string command="";
cin>>Qnums;
//f>>Qnums;
while(Qnums)
{
cin>>command;
cin>>num;
if(cin.fail()){
cin.clear();
}
if(command=="push_back")
{
if(reverseflag==0)
{
InsertBack(num, n);
}
else
{
InsertFront(n, num);
}
}
else if(command == "back")
{
if(reverseflag==0)
{
bool flag = RemoveBack(n, a);
if(flag)
cout << a << endl;
}
else
{
bool flag = RemoveFront(n, a);
if(flag)
cout << a << endl;
}
}
else if(command == "toFront")
{
if(reverseflag==0)
{
InsertFront(n,num);
}
else
{
InsertBack(num, n);
}
}
else if(command == "front")
{
if(reverseflag==0)
{
bool flag = RemoveFront(n, a);
if(flag)
cout << a << endl;
}
else
{
bool flag = RemoveBack(n, a);
if(flag)
cout << a << endl;
}
}
else if(command == "reverse")
{
ReverseList();
}
else
{
}
Qnums--;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxzdHJpbmc+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKLy9pZnN0cmVhbSBmKCJkYXRhMi5pbiIpOwovLzAgbWVhbnMgbm90IHJldmVyc2VkCi8vMSBtZWFucyByZXZlcnNlZAppbnQgcmV2ZXJzZWZsYWcgPSAwOwoKc3RydWN0IG5vZGV7CiAgICBpbnQgbnVtYmVyOwogICAgbm9kZSAqbmV4dDsKfTsKCm5vZGUgKmluaXROb2RlKGludCBudW1iZXIpCnsKICAgIG5vZGUgKmhlYWQgPSBuZXcgbm9kZTsKICAgIGhlYWQtPm5leHQgPSBOVUxMOwogICAgaGVhZC0+bnVtYmVyID0gbnVtYmVyOwogICAgcmV0dXJuIGhlYWQ7Cn0Kdm9pZCBJbnNlcnRGcm9udChub2RlICpoZWFkLCBpbnQgbnVtYmVyKQp7CiAgICBub2RlICpjdXIgPSBoZWFkOwogICAgbm9kZSAqdG1wID0gbmV3IG5vZGU7CiAgICBjdXIgPSBjdXItPm5leHQ7CiAgICBoZWFkLT5uZXh0ID0gdG1wOwogICAgdG1wLT5uZXh0ID0gY3VyOwogICAgdG1wLT5udW1iZXIgPSBudW1iZXI7Cn0KCnZvaWQgSW5zZXJ0QmFjayhpbnQgbnVtYmVyLCBub2RlICpoZWFkKQp7CiAgICBub2RlICpjdXIgPSBoZWFkOwogICAgbm9kZSAqbGFzdCA9IG5ldyBub2RlOwogICAgICAgIGlmKGN1ciE9MCkKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlKGN1ci0+bmV4dCE9TlVMTCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY3VyID0gY3VyLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1ci0+bmV4dCA9IGxhc3Q7CiAgICAgICAgICAgIGxhc3QtPm5leHQgPSBOVUxMOwogICAgICAgICAgICBsYXN0LT5udW1iZXIgPSBudW1iZXI7CiAgICAgICAgfQp9Cgp2b2lkIFByaW50TGlua2VkTGlzdChub2RlICpoZWFkKQp7CiAgICBpZihoZWFkKQogICAgewogICAgICAgIG5vZGUgKmN1ciA9IGhlYWQ7CiAgICAgICAgd2hpbGUoY3VyICE9IE5VTEwpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IGN1ci0+bnVtYmVyIDw8ICIgIjsKICAgICAgICAgICAgY3VyPWN1ci0+bmV4dDsKICAgICAgICB9CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQogICAgZWxzZQogICAgICAgIGNvdXQgPDwgIkxpc3QgaXMgZW1wdHkgLi4uIiA8PCBlbmRsOwp9Cgpib29sIFJlbW92ZUZyb250KG5vZGUgKmhlYWQsIGludCAmYSkKewogICAgaWYoaGVhZC0+bmV4dD09TlVMTCAmJiBoZWFkLT5udW1iZXI9PS0xKQogICAgewogICAgICAgIGNvdXQgPDwgIk5vIGpvYiBmb3IgQWRhPyIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbm9kZSAqdG1wID0gaGVhZC0+bmV4dDsKICAgICAgICBhID0gdG1wLT5udW1iZXI7CiAgICAgICAgbm9kZSAqY3VyID0gdG1wLT5uZXh0OwogICAgICAgIGhlYWQtPm5leHQgPSBjdXI7CiAgICAgICAgZnJlZSh0bXApOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cgpib29sIFJlbW92ZUJhY2sobm9kZSAqaGVhZCwgaW50ICZhKQp7CiAgICBub2RlICp0ZW1wOwogICAgbm9kZSAqY3VyID0gaGVhZDsKICAgIGlmKGhlYWQtPm5leHQgPT0gTlVMTCAmJiBoZWFkLT5udW1iZXIgPT0gLTEpCiAgICB7CiAgICAgICAgY291dCA8PCAiTm8gam9iIGZvciBBZGE/IiA8PCBlbmRsOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBpZihjdXIgIT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIC8vZmluZCBsYXN0CiAgICAgICAgICAgIHdoaWxlKGN1ci0+bmV4dCAhPSBOVUxMKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0ZW1wID0gY3VyOwogICAgICAgICAgICAgICAgY3VyID0gY3VyLT5uZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGEgPSBjdXItPm51bWJlcjsKICAgICAgICAgICAgdGVtcC0+bmV4dCA9IDA7CiAgICAgICAgICAgIGZyZWUoY3VyKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn0KCnZvaWQgUmV2ZXJzZUxpc3QoKQp7CiAgICBpZihyZXZlcnNlZmxhZz09MSkKICAgICAgICByZXZlcnNlZmxhZyA9IDA7CiAgICBlbHNlCiAgICAgICAgcmV2ZXJzZWZsYWcgPSAxOwp9CgoKaW50IG1haW4gKCkKewogICAgLy9UT0RPIHRlc3QgYWxsIGlucHV0IGRhdGEKICAgIGludCBudW09LTE7CiAgICBpbnQgUW51bXM9MDsKICAgIC8va2VlcCB0cmFjayBvZiBub2RlIHdpdGggbnVtYmVyIC0xIC0+IGl0IGNhbm5vdCBiZSBkZWxldGVkICEhISEKICAgIG5vZGUgKm4gPSBpbml0Tm9kZSgtMSk7CiAgICBpbnQgYSA9IDA7CiAgICBzdHJpbmcgY29tbWFuZD0iIjsKCiAgICBjaW4+PlFudW1zOwogICAgLy9mPj5RbnVtczsKICAgIHdoaWxlKFFudW1zKQogICAgewogICAgICAgIGNpbj4+Y29tbWFuZDsKICAgICAgICBjaW4+Pm51bTsKICAgICAgICBpZihjaW4uZmFpbCgpKXsKICAgICAgICAgICAgY2luLmNsZWFyKCk7CiAgICAgICAgfQogICAgICAgIGlmKGNvbW1hbmQ9PSJwdXNoX2JhY2siKQogICAgICAgIHsKICAgICAgICAgICAgaWYocmV2ZXJzZWZsYWc9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEluc2VydEJhY2sobnVtLCBuKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEluc2VydEZyb250KG4sIG51bSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZihjb21tYW5kID09ICJiYWNrIikKICAgICAgICB7CiAgICAgICAgICAgIGlmKHJldmVyc2VmbGFnPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBib29sIGZsYWcgPSBSZW1vdmVCYWNrKG4sIGEpOwogICAgICAgICAgICAgICAgaWYoZmxhZykKICAgICAgICAgICAgICAgICAgICBjb3V0IDw8IGEgPDwgZW5kbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJvb2wgZmxhZyA9IFJlbW92ZUZyb250KG4sIGEpOwogICAgICAgICAgICAgICAgaWYoZmxhZykKICAgICAgICAgICAgICAgICAgICBjb3V0IDw8IGEgPDwgZW5kbDsKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihjb21tYW5kID09ICJ0b0Zyb250IikKICAgICAgICB7CiAgICAgICAgICAgIGlmKHJldmVyc2VmbGFnPT0wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJbnNlcnRGcm9udChuLG51bSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJbnNlcnRCYWNrKG51bSwgbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoY29tbWFuZCA9PSAiZnJvbnQiKQogICAgICAgIHsKICAgICAgICAgICAgaWYocmV2ZXJzZWZsYWc9PTApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJvb2wgZmxhZyA9IFJlbW92ZUZyb250KG4sIGEpOwogICAgICAgICAgICAgICAgaWYoZmxhZykKICAgICAgICAgICAgICAgICAgICBjb3V0IDw8IGEgPDwgZW5kbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJvb2wgZmxhZyA9IFJlbW92ZUJhY2sobiwgYSk7CiAgICAgICAgICAgICAgICBpZihmbGFnKQogICAgICAgICAgICAgICAgICAgIGNvdXQgPDwgYSA8PCBlbmRsOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGNvbW1hbmQgPT0gInJldmVyc2UiKQogICAgICAgIHsKICAgICAgICAgICAgUmV2ZXJzZUxpc3QoKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICB9CiAgICAgICAgUW51bXMtLTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==
MTUKdG9Gcm9udCA5Mwpmcm9udApiYWNrCnJldmVyc2UKYmFjawpyZXZlcnNlCnRvRnJvbnQgODAKcHVzaF9iYWNrIDUzCnB1c2hfYmFjayA1MApmcm9udApmcm9udApyZXZlcnNlCnB1c2hfYmFjayA2NgpyZXZlcnNlCmZyb250
15
toFront 93
front
back
reverse
back
reverse
toFront 80
push_back 53
push_back 50
front
front
reverse
push_back 66
reverse
front