#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int val;
struct node*next;
}Node;
Node*head=NULL;
Node*createN(int x){
Node*newnode;
newnode
=(Node
*)malloc(sizeof(Node
)); newnode->val=x;
newnode->next=NULL;
return newnode;
}
void freeL(){
Node*p;
while(head!=NULL){
p=head->next;
head=p;
}
}
void printL(){
Node*p=head;
while(p!=NULL){
p=p->next;
}
}
void push(int x){
Node*newnode=createN(x);
newnode->next=head;
head=newnode;
}
int pop(){
if(head==NULL)return 0;
int val=head->val;
Node*temp=head;
head=head->next;
return val;
}
void enqueue(int x){
Node*newnode=createN(x);
if(head==NULL){
head=newnode;
}else{
Node*p=head;
while(p->next!=NULL)p=p->next;
p->next=newnode;
}
}
int dequeue(){
if(head==NULL)return 0;
int val=head->val;
Node*temp=head;
head=head->next;
return val;
}
int main(void){
int s1,s2,s3,q1,q2,q3;
push(1);
push(2);
push(3);
s1=pop();
s2=pop();
s3=pop();
printf("%d %d %d\n",s1
,s2
,s3
);
enqueue(1);
enqueue(2);
enqueue(3);
q1=dequeue();
q2=dequeue();
q3=dequeue();
printf("%d %d %d\n",q1
,q2
,q3
);
freeL();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGV7CiAgICBpbnQgdmFsOwogICAgc3RydWN0IG5vZGUqbmV4dDsKfU5vZGU7CgpOb2RlKmhlYWQ9TlVMTDsKCk5vZGUqY3JlYXRlTihpbnQgeCl7CiAgICBOb2RlKm5ld25vZGU7CiAgICBuZXdub2RlPShOb2RlKiltYWxsb2Moc2l6ZW9mKE5vZGUpKTsKICAgIG5ld25vZGUtPnZhbD14OwogICAgbmV3bm9kZS0+bmV4dD1OVUxMOwogICAgcmV0dXJuIG5ld25vZGU7Cn0KCnZvaWQgZnJlZUwoKXsKICAgIE5vZGUqcDsKICAgIHdoaWxlKGhlYWQhPU5VTEwpewogICAgICAgIHA9aGVhZC0+bmV4dDsKICAgICAgICBmcmVlKGhlYWQpOwogICAgICAgIGhlYWQ9cDsKICAgIH0KfQoKdm9pZCBwcmludEwoKXsKICAgIE5vZGUqcD1oZWFkOwogICAgd2hpbGUocCE9TlVMTCl7CiAgICAgICAgcHJpbnRmKCIlZCAiLHAtPnZhbCk7CiAgICAgICAgcD1wLT5uZXh0OwogICAgfQogICAgcHJpbnRmKCJcbiIpOwp9Cgp2b2lkIHB1c2goaW50IHgpewogICAgTm9kZSpuZXdub2RlPWNyZWF0ZU4oeCk7CiAgICBuZXdub2RlLT5uZXh0PWhlYWQ7CiAgICBoZWFkPW5ld25vZGU7Cn0KCmludCBwb3AoKXsKICAgIGlmKGhlYWQ9PU5VTEwpcmV0dXJuIDA7CiAgICBpbnQgdmFsPWhlYWQtPnZhbDsKICAgIE5vZGUqdGVtcD1oZWFkOwogICAgaGVhZD1oZWFkLT5uZXh0OwogICAgZnJlZSh0ZW1wKTsKICAgIHJldHVybiB2YWw7Cn0KCnZvaWQgZW5xdWV1ZShpbnQgeCl7CiAgICBOb2RlKm5ld25vZGU9Y3JlYXRlTih4KTsKICAgIGlmKGhlYWQ9PU5VTEwpewogICAgICAgIGhlYWQ9bmV3bm9kZTsKICAgIH1lbHNlewogICAgICAgIE5vZGUqcD1oZWFkOwogICAgICAgIHdoaWxlKHAtPm5leHQhPU5VTEwpcD1wLT5uZXh0OwogICAgICAgIHAtPm5leHQ9bmV3bm9kZTsKICAgIH0KfQoKaW50IGRlcXVldWUoKXsKICAgIGlmKGhlYWQ9PU5VTEwpcmV0dXJuIDA7CiAgICBpbnQgdmFsPWhlYWQtPnZhbDsKICAgIE5vZGUqdGVtcD1oZWFkOwogICAgaGVhZD1oZWFkLT5uZXh0OwogICAgZnJlZSh0ZW1wKTsKICAgIHJldHVybiB2YWw7Cn0KCmludCBtYWluKHZvaWQpewogICAgaW50IHMxLHMyLHMzLHExLHEyLHEzOwoKICAgIHB1c2goMSk7CiAgICBwdXNoKDIpOwogICAgcHVzaCgzKTsKICAgIHMxPXBvcCgpOwogICAgczI9cG9wKCk7CiAgICBzMz1wb3AoKTsKICAgIHByaW50ZigiJWQgJWQgJWRcbiIsczEsczIsczMpOwoKICAgIGVucXVldWUoMSk7CiAgICBlbnF1ZXVlKDIpOwogICAgZW5xdWV1ZSgzKTsKICAgIHExPWRlcXVldWUoKTsKICAgIHEyPWRlcXVldWUoKTsKICAgIHEzPWRlcXVldWUoKTsKICAgIHByaW50ZigiJWQgJWQgJWRcbiIscTEscTIscTMpOwoKICAgIGZyZWVMKCk7CiAgICByZXR1cm4gMDsKfQ==