#includeusing namespace std;struct LinktackNode{ LinktackNode* lastIn; int value;};struct LinkStack{ LinktackNode* top; LinktackNode* bottom; bool isEmpty; int cnt;};LinkStack* createLinkStack(){ LinkStack* st = (LinkStack*)malloc(sizeof(LinkStack)); LinktackNode* temp = (LinktackNode*)malloc(sizeof(LinktackNode)); temp->lastIn=NULL; st->top=temp; st->bottom=temp; st->cnt=0; st->isEmpty=true; return st;}bool isEmpty(LinkStack* st){ return st->isEmpty;} void push(LinkStack* st,int value){ LinktackNode* inNode = (LinktackNode*)malloc(sizeof(LinktackNode)); inNode->lastIn=st->top; inNode->value=value; st->top=inNode; st->isEmpty =((++st->cnt)==0);}bool pop(LinkStack* st,int* ans){ if(!st->isEmpty) { *ans=st->top->value; st->top=st->top->lastIn; st->isEmpty =((--st->cnt)==0); return 1; } return 0;}bool top(LinkStack* st,int* ans){ if(!st->isEmpty) { *ans=st->top->value; return 1; } return 0;}void clearStack(LinkStack* st){ int x; while(!st->isEmpty) { pop(st,&x); cout< <<" "; } cout< top; while(p!=st->bottom) { cout< value<<" "; p=p->lastIn; } cout< >len;}