#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int val;
struct node* next;
} STACK;
STACK* push (STACK* stack, int val);
STACK* pop (STACK** stack);
void printStack (STACK* stack);
int main (void) {
STACK* stack = NULL;
printStack (stack);
stack = push (stack, 5);
stack = push (stack, 4);
stack = push (stack, 3);
printStack (stack);
pop (&stack);
pop (&stack);
printStack (stack);
stack = push (stack, 2);
printStack (stack);
pop (&stack);
printStack (stack);
pop (&stack);
printStack (stack);
stack = push (stack, 6);
printStack (stack);
pop (&stack);
printStack (stack);
return 0;
}
STACK* push (STACK* stack, int val) {
STACK
* pNew
= malloc (sizeof (STACK
)); pNew->val = val;
pNew->next = stack;
stack = pNew;
return stack;
}
STACK* pop (STACK** stack) {
STACK* temp = *stack;
if (temp) {
*stack = temp->next;
temp->next = NULL;
}
return temp;
}
void printStack (STACK* stack) {
if (!stack) {
return;
}
while (stack) {
stack = stack->next;
}
return;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGUgewogICAgCiAgICBpbnQgdmFsOwogICAgc3RydWN0IG5vZGUqIG5leHQ7Cgp9IFNUQUNLOwoKU1RBQ0sqIHB1c2ggKFNUQUNLKiBzdGFjaywgaW50IHZhbCk7ClNUQUNLKiBwb3AgKFNUQUNLKiogc3RhY2spOwp2b2lkIHByaW50U3RhY2sgKFNUQUNLKiBzdGFjayk7CgppbnQgbWFpbiAodm9pZCkgewogICAgCiAgICBTVEFDSyogc3RhY2sgPSBOVUxMOwogICAgCiAgICBwcmludFN0YWNrIChzdGFjayk7CiAgICBzdGFjayA9IHB1c2ggKHN0YWNrLCA1KTsKICAgIHN0YWNrID0gcHVzaCAoc3RhY2ssIDQpOwogICAgc3RhY2sgPSBwdXNoIChzdGFjaywgMyk7CiAgICBwcmludFN0YWNrIChzdGFjayk7CiAgICBwb3AgKCZzdGFjayk7CiAgICBwb3AgKCZzdGFjayk7CiAgICBwcmludFN0YWNrIChzdGFjayk7CiAgICBzdGFjayA9IHB1c2ggKHN0YWNrLCAyKTsKICAgIHByaW50U3RhY2sgKHN0YWNrKTsKICAgIHBvcCAoJnN0YWNrKTsKICAgIHByaW50U3RhY2sgKHN0YWNrKTsKICAgIHBvcCAoJnN0YWNrKTsKICAgIHByaW50U3RhY2sgKHN0YWNrKTsKICAgIHN0YWNrID0gcHVzaCAoc3RhY2ssIDYpOwogICAgcHJpbnRTdGFjayAoc3RhY2spOwogICAgcG9wICgmc3RhY2spOwogICAgcHJpbnRTdGFjayAoc3RhY2spOwogICAgCiAgICByZXR1cm4gMDsKICAgIAp9CgoKU1RBQ0sqIHB1c2ggKFNUQUNLKiBzdGFjaywgaW50IHZhbCkgewogICAgCiAgICBTVEFDSyogcE5ldyA9IG1hbGxvYyAoc2l6ZW9mIChTVEFDSykpOwogICAgcE5ldy0+dmFsID0gdmFsOwogICAgcE5ldy0+bmV4dCA9IHN0YWNrOwogICAgc3RhY2sgPSBwTmV3OwogICAgCiAgICByZXR1cm4gc3RhY2s7CiAgICAgCn0KCgpTVEFDSyogcG9wIChTVEFDSyoqIHN0YWNrKSB7CiAgICAKICAgIFNUQUNLKiB0ZW1wID0gKnN0YWNrOwogICAgCiAgICBpZiAodGVtcCkgewogICAgICAgIAogICAgICAgICpzdGFjayA9IHRlbXAtPm5leHQ7CiAgICAgICAgdGVtcC0+bmV4dCA9IE5VTEw7CiAgICAgICAgCiAgICB9CiAgICAKICAgIHJldHVybiB0ZW1wOyAKICAgIAp9CgoKdm9pZCBwcmludFN0YWNrIChTVEFDSyogc3RhY2spIHsKICAgIAogICAgaWYgKCFzdGFjaykgewogICAgICAgIAogICAgICAgIHByaW50ZiAoIlN0YWNrIGlzIGVtcHR5XG4iKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICAKICAgIHByaW50ZiAoIlN0YWNrIGhhczoiKTsKICAgIAogICAgd2hpbGUgKHN0YWNrKSB7CiAgICAgICAgCiAgICAgICAgcHJpbnRmICgiICVkIiwgc3RhY2stPnZhbCk7CiAgICAgICAgc3RhY2sgPSBzdGFjay0+bmV4dDsKICAgICAgICAKICAgIH0KICAgIAogICAgcHV0Y2hhciAoJ1xuJyk7CiAgICAKICAgIHJldHVybjsKICAgIAp9Cg==