#include <iostream>
using namespace std;
struct Node
{
int x;
Node *next;
};
Node *head=NULL,*tail=NULL;
int Count=0;
void push(int a)
{
if (head==NULL)
{
Node *p = new Node;
p->x=a;
p->next=NULL;
head=tail=p;
}
else
{
Node *p = new Node;
p->x=a;
p->next=NULL;
tail->next=p;
tail=p;
}
Count++;
}
void pop()
{
if (Count)
{
Node *p = head;
head = p->next;
delete p;
Count--;
if (!Count) head=tail=NULL;
}
}
void Show()
{
Node *p = head;
while (p)
{
cout<<p->x<<" ";
p = p->next;
}
cout<<endl;
}
int size() {return Count;}
int main()
{
for (int i=0;i<6;i++) push(i);
Show();
cout<<"size = "<<size()<<endl;
for (int i=0;i<2;i++) pop();
Show();
cout<<"size = "<<size()<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnN0cnVjdCBOb2RlCnsKICAgIGludCB4OwogICAgTm9kZSAqbmV4dDsKfTsKIApOb2RlICpoZWFkPU5VTEwsKnRhaWw9TlVMTDsKaW50IENvdW50PTA7CiAKdm9pZCBwdXNoKGludCBhKQp7CiAgICBpZiAoaGVhZD09TlVMTCkKICAgIHsKICAgICAgICBOb2RlICpwID0gbmV3IE5vZGU7CiAgICAgICAgcC0+eD1hOwogICAgICAgIHAtPm5leHQ9TlVMTDsKICAgICAgICBoZWFkPXRhaWw9cDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBOb2RlICpwID0gbmV3IE5vZGU7CiAgICAgICAgcC0+eD1hOwogICAgICAgIHAtPm5leHQ9TlVMTDsKICAgICAgICB0YWlsLT5uZXh0PXA7CiAgICAgICAgdGFpbD1wOwogICAgfQogICAgQ291bnQrKzsKfQogCnZvaWQgcG9wKCkKewogICAgaWYgKENvdW50KQogICAgewogICAgICAgIE5vZGUgKnAgPSBoZWFkOwogICAgICAgIGhlYWQgPSBwLT5uZXh0OwogICAgICAgIGRlbGV0ZSBwOwogICAgICAgIENvdW50LS07CiAgICAgICAgaWYgKCFDb3VudCkgaGVhZD10YWlsPU5VTEw7CiAgICB9Cn0KCnZvaWQgU2hvdygpIAp7CglOb2RlICpwID0gaGVhZDsKCXdoaWxlIChwKQoJewoJCWNvdXQ8PHAtPng8PCIgIjsKCQlwID0gcC0+bmV4dDsKCX0KCWNvdXQ8PGVuZGw7Cn0KCmludCBzaXplKCkge3JldHVybiBDb3VudDt9CiAKaW50IG1haW4oKSAKewogICAgZm9yIChpbnQgaT0wO2k8NjtpKyspIHB1c2goaSk7CiAgICBTaG93KCk7CiAgICBjb3V0PDwic2l6ZSA9ICI8PHNpemUoKTw8ZW5kbDsKICAgIGZvciAoaW50IGk9MDtpPDI7aSsrKSBwb3AoKTsKICAgIFNob3coKTsKICAgIGNvdXQ8PCJzaXplID0gIjw8c2l6ZSgpPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=