#include <iostream>
using namespace std;
struct Stack {
int data;
struct Stack *next;
};
struct Stack *newNode(int data){
struct Stack *stackNode = (Stack*)malloc(sizeof(Stack));
stackNode->data = data;
stackNode->next = NULL;
return stackNode;
}
void push(struct Stack **root,int data){
Stack *stack = newNode(data);
stack->next = *root;
*root = stack;
}
bool isEmpty(struct Stack *root ){
return !root;
}
int pop(Stack **root){
if(isEmpty(*root)){
cout<<"STACK UNDERFLOW";
}
else{
Stack *temp = *root;
*root = (*root)->next;
int popped = temp->data;
free(temp);
return popped;
printf("yes");
}
}
void print(Stack *root){
while(root!= NULL){
printf("%d", root->data);
root = root->next;
}
}
void InsertBottom(struct Stack **root, int item){
if(isEmpty(*root) || item <(*root)->data){
push(root,item);
}
else{
int temp = pop(root);
InsertBottom(root,item);
push(root,temp);
}
}
void reverse(struct Stack **root){
if(!isEmpty(*root)){
int temp = pop(root);
reverse(root);
InsertBottom(root,temp);
}
}
int main() {
// your code goes here
struct Stack *root = NULL;
push(&root,5);
push(&root,7);
push(&root,1);
push(&root,2);
reverse(&root);
print(root);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgU3RhY2sgewoJaW50IGRhdGE7CglzdHJ1Y3QgU3RhY2sgKm5leHQ7Cn07CgpzdHJ1Y3QgU3RhY2sgKm5ld05vZGUoaW50IGRhdGEpewoJc3RydWN0IFN0YWNrICpzdGFja05vZGUgPSAoU3RhY2sqKW1hbGxvYyhzaXplb2YoU3RhY2spKTsKCXN0YWNrTm9kZS0+ZGF0YSA9IGRhdGE7CglzdGFja05vZGUtPm5leHQgPSBOVUxMOwoJcmV0dXJuIHN0YWNrTm9kZTsKfQoKdm9pZCBwdXNoKHN0cnVjdCBTdGFjayAqKnJvb3QsaW50IGRhdGEpewoJU3RhY2sgKnN0YWNrID0gbmV3Tm9kZShkYXRhKTsKCXN0YWNrLT5uZXh0ID0gKnJvb3Q7Cgkqcm9vdCA9IHN0YWNrOwp9Cgpib29sIGlzRW1wdHkoc3RydWN0IFN0YWNrICpyb290ICl7CglyZXR1cm4gIXJvb3Q7Cn0KCmludCBwb3AoU3RhY2sgKipyb290KXsKCWlmKGlzRW1wdHkoKnJvb3QpKXsKCQljb3V0PDwiU1RBQ0sgVU5ERVJGTE9XIjsKCX0KCWVsc2V7CglTdGFjayAqdGVtcCA9ICpyb290OwoJKnJvb3QgPSAoKnJvb3QpLT5uZXh0OwoJaW50IHBvcHBlZCA9IHRlbXAtPmRhdGE7CglmcmVlKHRlbXApOwoJcmV0dXJuIHBvcHBlZDsKCXByaW50ZigieWVzIik7Cgl9Cn0KCnZvaWQgcHJpbnQoU3RhY2sgKnJvb3QpewoJd2hpbGUocm9vdCE9IE5VTEwpewoJCXByaW50ZigiJWQiLCByb290LT5kYXRhKTsKCQlyb290ID0gcm9vdC0+bmV4dDsKCX0KfQp2b2lkIEluc2VydEJvdHRvbShzdHJ1Y3QgU3RhY2sgKipyb290LCBpbnQgaXRlbSl7CglpZihpc0VtcHR5KCpyb290KSB8fCBpdGVtIDwoKnJvb3QpLT5kYXRhKXsKCQlwdXNoKHJvb3QsaXRlbSk7Cgl9CgllbHNlewoJCWludCB0ZW1wID0gcG9wKHJvb3QpOwoJCUluc2VydEJvdHRvbShyb290LGl0ZW0pOwoJCQoJCXB1c2gocm9vdCx0ZW1wKTsKCQkKCX0KCQp9CnZvaWQgcmV2ZXJzZShzdHJ1Y3QgU3RhY2sgKipyb290KXsKCWlmKCFpc0VtcHR5KCpyb290KSl7CglpbnQgdGVtcCA9IHBvcChyb290KTsKCXJldmVyc2Uocm9vdCk7CglJbnNlcnRCb3R0b20ocm9vdCx0ZW1wKTsKCQp9Cn0KCgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKIHN0cnVjdCBTdGFjayAqcm9vdCA9IE5VTEw7CiBwdXNoKCZyb290LDUpOwogcHVzaCgmcm9vdCw3KTsKIHB1c2goJnJvb3QsMSk7CiBwdXNoKCZyb290LDIpOwogcmV2ZXJzZSgmcm9vdCk7CiBwcmludChyb290KTsKCXJldHVybiAwOwp9