Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // C program for linked list implementation of stack
- #include <stdio.h>
- #include <stdlib.h>
- #include <limits.h>
- // A structure to represent a stack
- struct StackNode
- {
- int data;
- struct StackNode* next;
- };
- struct StackNode* newNode(int data)
- {
- struct StackNode* stackNode =
- (struct StackNode*) malloc(sizeof(struct StackNode));
- stackNode->data = data;
- stackNode->next = NULL;
- return stackNode;
- }
- int isEmpty(struct StackNode *root)
- {
- return !root;
- }
- void push(struct StackNode* root, int data)
- {
- struct StackNode* stackNode = newNode(data);
- stackNode->next = root;
- root = stackNode;
- printf("%d pushed to stack\n", data);
- }
- int pop(struct StackNode** root)
- {
- if (isEmpty(*root))
- return INT_MIN;
- struct StackNode* temp = *root;
- *root = (*root)->next;
- int popped = temp->data;
- free(temp);
- return popped;
- }
- int peek(struct StackNode* root)
- {
- if (isEmpty(root))
- return INT_MIN;
- return root->data;
- }
- int main()
- {
- struct StackNode* root = NULL;
- push(root, 10);
- push(root, 20);
- push(root, 30);
- printf("%d popped from stack\n", pop(&root));
- printf("Top element is %d\n", peek(root));
- // Free memory
- struct StackNode *ptr = root;
- while (ptr != NULL)
- {
- struct StackNode *next = ptr->next;
- free(ptr);
- ptr = next;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement