#include<stdio.h>
#include<stdlib.h>
struct stackNode
{
int data;
struct stackNode * next;
};
// defining the generic function to PUSH an element into the stack
struct stackNode * push(struct stackNode * top, int element)
{
//creating a temporary node and assigning the element to be PUSHED
struct stackNode
* temp
= (struct stackNode
*)malloc(sizeof(struct stackNode
)); if(!temp)
{
return top;
}
temp -> data = element;
// we need to point the NEXT of this node to the previous TOP
temp -> next = top;
//Code obtained from http://w...content-available-to-author-only...w.studyalgorithms,com
//Feel free to copy but please acknowledge the site wherever possible
// we need to update the TOP node and then return it
// we can simply return the 'temp' node as it points to the new TOP node.
return temp;
}
// defining a function to check if a stack is empty
int isStackEmpty(struct stackNode * top)
{
if(top == NULL)
return 1;
else
return 0;
}
//Code obtained from http://w...content-available-to-author-only...w.studyalgorithms,com
//Feel free to copy but please acknowledge the site wherever possible
// defining a function to pop an element from a stack
struct stackNode * pop(struct stackNode * top)
{
// check if the stack is empty
if(isStackEmpty(top))
{
printf("STACK IS EMPTY...Stack underflow"); return NULL;
}
else
{
printf("POP element = %d\n",top
-> data
);
// we need to delete the top and move to the next element.
struct stackNode * temp = top;
// move to the next node
top = top -> next;
//Code obtained from http://w...content-available-to-author-only...w.studyalgorithms,com
//Feel free to copy but please acknowledge the site wherever possible
// delete the original top
// return the new top
return top;
}
}
// function to get the size of the stack
int getStackSize(struct stackNode * top)
{
int count = 0;
while(top)
{
count++;
top = top -> next;
//Code obtained from http://w...content-available-to-author-only...w.studyalgorithms,com
//Feel free to copy but please acknowledge the site wherever possible
}
return count;
}
int main(void)
{
struct stackNode * top = NULL;
top = push(top,1);
top = push(top,2);
top = push(top,3);
top = push(top,4);
top = push(top,5);
top = pop(top);
top = pop(top);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgpzdHJ1Y3Qgc3RhY2tOb2RlCnsKICAgIGludCBkYXRhOwogICAgc3RydWN0IHN0YWNrTm9kZSAqIG5leHQ7Cn07CgovLyBkZWZpbmluZyB0aGUgZ2VuZXJpYyBmdW5jdGlvbiB0byBQVVNIIGFuIGVsZW1lbnQgaW50byB0aGUgc3RhY2sKc3RydWN0IHN0YWNrTm9kZSAqIHB1c2goc3RydWN0IHN0YWNrTm9kZSAqIHRvcCwgaW50IGVsZW1lbnQpCnsKICAgIC8vY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgbm9kZSBhbmQgYXNzaWduaW5nIHRoZSBlbGVtZW50IHRvIGJlIFBVU0hFRAogICAgc3RydWN0IHN0YWNrTm9kZSAqIHRlbXAgPSAoc3RydWN0IHN0YWNrTm9kZSAqKW1hbGxvYyhzaXplb2Yoc3RydWN0IHN0YWNrTm9kZSkpOwoJaWYoIXRlbXApCgl7CgkJcHJpbnRmKCJTVEFDSyBPVkVSRkxPVyIpOwoJCXJldHVybiB0b3A7Cgl9CgkKICAgIHRlbXAgLT4gZGF0YSA9IGVsZW1lbnQ7CiAgICAgCiAgICAvLyB3ZSBuZWVkIHRvIHBvaW50IHRoZSBORVhUIG9mIHRoaXMgbm9kZSB0byB0aGUgcHJldmlvdXMgVE9QCiAgICB0ZW1wIC0+IG5leHQgPSB0b3A7CgkvL0NvZGUgb2J0YWluZWQgZnJvbSBodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udy5zdHVkeWFsZ29yaXRobXMsY29tCgkvL0ZlZWwgZnJlZSB0byBjb3B5IGJ1dCBwbGVhc2UgYWNrbm93bGVkZ2UgdGhlIHNpdGUgd2hlcmV2ZXIgcG9zc2libGUKIAogICAgLy8gd2UgbmVlZCB0byB1cGRhdGUgdGhlIFRPUCBub2RlIGFuZCB0aGVuIHJldHVybiBpdAogICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlICd0ZW1wJyBub2RlIGFzIGl0IHBvaW50cyB0byB0aGUgbmV3IFRPUCBub2RlLgogICAgcmV0dXJuIHRlbXA7Cn0KCi8vIGRlZmluaW5nIGEgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBzdGFjayBpcyBlbXB0eQppbnQgaXNTdGFja0VtcHR5KHN0cnVjdCBzdGFja05vZGUgKiB0b3ApCnsKICAgIGlmKHRvcCA9PSBOVUxMKQogICAgICAgIHJldHVybiAxOwogICAgZWxzZQogICAgICAgIHJldHVybiAwOwp9CgovL0NvZGUgb2J0YWluZWQgZnJvbSBodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udy5zdHVkeWFsZ29yaXRobXMsY29tCi8vRmVlbCBmcmVlIHRvIGNvcHkgYnV0IHBsZWFzZSBhY2tub3dsZWRnZSB0aGUgc2l0ZSB3aGVyZXZlciBwb3NzaWJsZQoKLy8gZGVmaW5pbmcgYSBmdW5jdGlvbiB0byBwb3AgYW4gZWxlbWVudCBmcm9tIGEgc3RhY2sKc3RydWN0IHN0YWNrTm9kZSAqIHBvcChzdHJ1Y3Qgc3RhY2tOb2RlICogdG9wKQp7CiAgICAvLyBjaGVjayBpZiB0aGUgc3RhY2sgaXMgZW1wdHkKICAgIGlmKGlzU3RhY2tFbXB0eSh0b3ApKQogICAgewogICAgICAgIHByaW50ZigiU1RBQ0sgSVMgRU1QVFkuLi5TdGFjayB1bmRlcmZsb3ciKTsKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBwcmludGYoIlBPUCBlbGVtZW50ID0gJWRcbiIsdG9wIC0+IGRhdGEpOwogCiAgICAgICAgLy8gd2UgbmVlZCB0byBkZWxldGUgdGhlIHRvcCBhbmQgbW92ZSB0byB0aGUgbmV4dCBlbGVtZW50LgogCiAgICAgICAgc3RydWN0IHN0YWNrTm9kZSAqIHRlbXAgPSB0b3A7CiAKICAgICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IG5vZGUKICAgICAgICB0b3AgPSB0b3AgLT4gbmV4dDsKCQkKCQkvL0NvZGUgb2J0YWluZWQgZnJvbSBodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udy5zdHVkeWFsZ29yaXRobXMsY29tCgkJLy9GZWVsIGZyZWUgdG8gY29weSBidXQgcGxlYXNlIGFja25vd2xlZGdlIHRoZSBzaXRlIHdoZXJldmVyIHBvc3NpYmxlCiAgICAgICAgCgkJLy8gZGVsZXRlIHRoZSBvcmlnaW5hbCB0b3AKICAgICAgICBmcmVlKHRlbXApOwogCiAgICAgICAgLy8gcmV0dXJuIHRoZSBuZXcgdG9wCiAgICAgICAgcmV0dXJuIHRvcDsKICAgIH0KfQoKLy8gZnVuY3Rpb24gdG8gZ2V0IHRoZSBzaXplIG9mIHRoZSBzdGFjawppbnQgZ2V0U3RhY2tTaXplKHN0cnVjdCBzdGFja05vZGUgKiB0b3ApCnsKICAgIGludCBjb3VudCA9IDA7CiAgICB3aGlsZSh0b3ApCiAgICB7CiAgICAgICAgY291bnQrKzsKICAgICAgICB0b3AgPSB0b3AgLT4gbmV4dDsKCQkvL0NvZGUgb2J0YWluZWQgZnJvbSBodHRwOi8vdy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4udy5zdHVkeWFsZ29yaXRobXMsY29tCgkJLy9GZWVsIGZyZWUgdG8gY29weSBidXQgcGxlYXNlIGFja25vd2xlZGdlIHRoZSBzaXRlIHdoZXJldmVyIHBvc3NpYmxlCiAgICB9CiAgICByZXR1cm4gY291bnQ7Cn0KCmludCBtYWluKHZvaWQpCnsKCXN0cnVjdCBzdGFja05vZGUgKiB0b3AgPSBOVUxMOwoJCgl0b3AgPSBwdXNoKHRvcCwxKTsKCXRvcCA9IHB1c2godG9wLDIpOwoJdG9wID0gcHVzaCh0b3AsMyk7Cgl0b3AgPSBwdXNoKHRvcCw0KTsKCXRvcCA9IHB1c2godG9wLDUpOwoJCgl0b3AgPSBwb3AodG9wKTsKCXRvcCA9IHBvcCh0b3ApOwoJCglyZXR1cm4gMDsKfQ==