#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 initL(int n){
int x,i;
Node *p;
head = createN(x);
p = head;
for(i=1;i<n;i++){
p->next = createN(x);
p = p->next;
}
}
void freeL(){
Node *p;
while(head!=NULL){
p = head->next;
head = p;
}
}
void printN(Node *a){
if(a
== NULL
) printf("NULL\n"); }
void printL(){
Node *p = head;
while(p != NULL){
p = p->next;
}
}
Node* getN(int n){
int i;
Node *p;
p = head;
for(i=1;i<n;i++) p = p->next;
return p;
}
int countL(){
int ret = 0;
Node *p = head;
while(p!=NULL){
p = p->next;
ret++;
}
return ret;
}
Node* searchX(int x){
Node *p;
for(p=head; p!=NULL; p=p->next){
if(p->val == x) break;
}
return p;
}
void insHead(int x){
Node *p; //1
p = createN(x); //1
p->next = head; //2
head = p; //3
}
void insMiddle(int n, int x){
int i;
Node *p,*q;
p = head; //1
for(i=1;i<n;i++){ //2
p = p->next; //2
}
q = createN(x); //3
q->next = p->next; //4
p->next = q; //5
}
void insTail(int x){
Node *p;
p = head; //1
if(p==NULL){
head = createN(x);
return;
}
while(p->next != NULL){ //2
p = p->next; //2
}
p->next = createN(x); //3
}
void delHead(){
Node *p;
p = head; //1
head = head->next; //2
}
void delMiddle(int n){
int i;
Node *p,*q;
p = head; //1
for(i=1;i<n-1;i++){ //2
p = p->next; //2
}
q = p->next; //3
p->next = q->next; //4
}
void delTail(){
Node *p;
p = head; //1
while(p->next->next != NULL){ //2
p = p->next; //2
}
p->next = NULL; //4
}
void push(int x){
insHead(x);
}
int pop(){
int n = head->val;
delHead();
return n;
}
void enqueue(int x){
insTail(x);
}
int dequeue(){
Node ret = *getN(1);
delHead();
return ret.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;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+Cgp0eXBlZGVmIHN0cnVjdCBub2RlIHsKICAgIGludCB2YWw7CiAgICBzdHJ1Y3Qgbm9kZSAqbmV4dDsKfU5vZGU7CgpOb2RlICpoZWFkID0gTlVMTDsKCk5vZGUqIGNyZWF0ZU4oaW50IHgpewogICAgTm9kZSAqbmV3bm9kZTsKICAgIG5ld25vZGUgPSAoTm9kZSAqKW1hbGxvYyhzaXplb2YoTm9kZSkpOwogICAgbmV3bm9kZS0+dmFsID0geDsKICAgIG5ld25vZGUtPm5leHQgPSBOVUxMOwogICAgcmV0dXJuIG5ld25vZGU7Cn0KCnZvaWQgaW5pdEwoaW50IG4pewogICAgaW50IHgsaTsKICAgIE5vZGUgKnA7CiAgICBzY2FuZigiJWQiLCZ4KTsKICAgIGhlYWQgPSBjcmVhdGVOKHgpOwogICAgcCA9IGhlYWQ7CiAgICBmb3IoaT0xO2k8bjtpKyspewogICAgICAgIHNjYW5mKCIlZCIsJngpOwogICAgICAgIHAtPm5leHQgPSBjcmVhdGVOKHgpOwogICAgICAgIHAgPSBwLT5uZXh0OwogICAgfQp9Cgp2b2lkIGZyZWVMKCl7CiAgICBOb2RlICpwOwogICAgd2hpbGUoaGVhZCE9TlVMTCl7CiAgICAgICAgcCA9IGhlYWQtPm5leHQ7CiAgICAgICAgZnJlZShoZWFkKTsKICAgICAgICBoZWFkID0gcDsKICAgIH0KfQoKdm9pZCBwcmludE4oTm9kZSAqYSl7CiAgICBpZihhID09IE5VTEwpIHByaW50ZigiTlVMTFxuIik7CiAgICBlbHNlIHByaW50ZigiJWRcbiIsYS0+dmFsKTsKfQoKdm9pZCBwcmludEwoKXsKICAgIE5vZGUgKnAgPSBoZWFkOwogICAgd2hpbGUocCAhPSBOVUxMKXsKICAgICAgICBwcmludGYoIiVkICIscC0+dmFsKTsKICAgICAgICBwID0gcC0+bmV4dDsKICAgIH0KICAgIHByaW50ZigiXG4iKTsKfQoKTm9kZSogZ2V0TihpbnQgbil7CiAgICBpbnQgaTsKICAgIE5vZGUgKnA7CiAgICBwID0gaGVhZDsKICAgIGZvcihpPTE7aTxuO2krKykgcCA9IHAtPm5leHQ7CiAgICByZXR1cm4gcDsKfQoKaW50IGNvdW50TCgpewogICAgaW50IHJldCA9IDA7CiAgICBOb2RlICpwID0gaGVhZDsKICAgIHdoaWxlKHAhPU5VTEwpewogICAgICAgIHAgPSBwLT5uZXh0OwogICAgICAgIHJldCsrOwogICAgfQogICAgcmV0dXJuIHJldDsKfQoKTm9kZSogc2VhcmNoWChpbnQgeCl7CiAgICBOb2RlICpwOwogICAgZm9yKHA9aGVhZDsgcCE9TlVMTDsgcD1wLT5uZXh0KXsKICAgICAgICBpZihwLT52YWwgPT0geCkgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gcDsKfQoKdm9pZCBpbnNIZWFkKGludCB4KXsKICAgIE5vZGUgKnA7ICAgICAgICAvL++8kQogICAgcCA9IGNyZWF0ZU4oeCk7IC8v77yRCiAgICBwLT5uZXh0ID0gaGVhZDsgLy/vvJIKICAgIGhlYWQgPSBwOyAgICAgICAvL++8kwp9Cgp2b2lkIGluc01pZGRsZShpbnQgbiwgaW50IHgpewogICAgaW50IGk7CiAgICBOb2RlICpwLCpxOwogICAgcCA9IGhlYWQ7ICAgICAgICAgICAvL++8kQogICAgZm9yKGk9MTtpPG47aSsrKXsgICAvL++8kgogICAgICAgIHAgPSBwLT5uZXh0OyAgICAvL++8kgogICAgfQogICAgcSA9IGNyZWF0ZU4oeCk7ICAgICAvL++8kwogICAgcS0+bmV4dCA9IHAtPm5leHQ7ICAvL++8lAogICAgcC0+bmV4dCA9IHE7ICAgICAgICAvL++8lQp9Cgp2b2lkIGluc1RhaWwoaW50IHgpewogICAgTm9kZSAqcDsKICAgIHAgPSBoZWFkOyAgICAgICAgICAgICAgIC8v77yRCiAgICBpZihwPT1OVUxMKXsKICAgICAgICBoZWFkID0gY3JlYXRlTih4KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB3aGlsZShwLT5uZXh0ICE9IE5VTEwpeyAvL++8kgogICAgICAgIHAgPSBwLT5uZXh0OyAgICAgICAgLy/vvJIKICAgIH0KICAgIHAtPm5leHQgPSBjcmVhdGVOKHgpOyAgIC8v77yTCn0KCnZvaWQgZGVsSGVhZCgpewogICAgTm9kZSAqcDsKICAgIHAgPSBoZWFkOyAgICAgICAgICAgLy/vvJEKICAgIGhlYWQgPSBoZWFkLT5uZXh0OyAgLy/vvJIKICAgIGZyZWUocCk7ICAgICAgICAgICAgLy/vvJMKfQoKdm9pZCBkZWxNaWRkbGUoaW50IG4pewogICAgaW50IGk7CiAgICBOb2RlICpwLCpxOwogICAgcCA9IGhlYWQ7ICAgICAgICAgICAvL++8kQogICAgZm9yKGk9MTtpPG4tMTtpKyspeyAvL++8kgogICAgICAgIHAgPSBwLT5uZXh0OyAgICAvL++8kgogICAgfQogICAgcSA9IHAtPm5leHQ7ICAgICAgICAvL++8kwogICAgcC0+bmV4dCA9IHEtPm5leHQ7ICAvL++8lAogICAgZnJlZShxKTsgICAgICAgICAgICAvL++8lQp9Cgp2b2lkIGRlbFRhaWwoKXsKICAgIE5vZGUgKnA7CiAgICBwID0gaGVhZDsgICAgICAgICAgICAgICAgICAgICAgIC8v77yRCiAgICB3aGlsZShwLT5uZXh0LT5uZXh0ICE9IE5VTEwpeyAgIC8v77ySCiAgICAgICAgcCA9IHAtPm5leHQ7ICAgICAgICAgICAgICAgIC8v77ySCiAgICB9CiAgICBmcmVlKHAtPm5leHQpOyAgICAgICAgICAgICAgICAgIC8v77yTCiAgICBwLT5uZXh0ID0gTlVMTDsgICAgICAgICAgICAgICAgIC8v77yUCn0KCnZvaWQgcHVzaChpbnQgeCl7CglpbnNIZWFkKHgpOwp9CgppbnQgcG9wKCl7CglpbnQgbiA9IGhlYWQtPnZhbDsKCWRlbEhlYWQoKTsKCXJldHVybiBuOwp9Cgp2b2lkIGVucXVldWUoaW50IHgpewoJaW5zVGFpbCh4KTsKfQoKaW50IGRlcXVldWUoKXsKICAgIE5vZGUgcmV0ID0gKmdldE4oMSk7CglkZWxIZWFkKCk7CglyZXR1cm4gcmV0LnZhbDsKfQoKaW50IG1haW4odm9pZCl7CglpbnQgczEsczIsczMscTEscTIscTM7CgogICAgcHVzaCgxKTsKICAgIHB1c2goMik7CiAgICBwdXNoKDMpOwogICAgczEgPSBwb3AoKTsKICAgIHMyID0gcG9wKCk7CiAgICBzMyA9IHBvcCgpOwogICAgcHJpbnRmKCIlZCAlZCAlZFxuIixzMSxzMixzMyk7CiAgICBlbnF1ZXVlKDEpOwogICAgZW5xdWV1ZSgyKTsKICAgIGVucXVldWUoMyk7CiAgICBxMSA9IGRlcXVldWUoKTsKICAgIHEyID0gZGVxdWV1ZSgpOwogICAgcTMgPSBkZXF1ZXVlKCk7CiAgICBwcmludGYoIiVkICVkICVkXG4iLHExLHEyLHEzKTsKCiAgICBmcmVlTCgpOwogICAgcmV0dXJuIDA7Cn0K