// C Program to demonstrate how to Implement a Stack
#include <stdio.h>
#include <stdbool.h>
// Define the maximim capacity of the stack
#define MAX_SIZE 100
// Define a structure for the stack
typedef struct {
int arr[ MAX_SIZE] ;
int top;
} Stack;
// Function to initialize the stack
void initialize( Stack * stack) {
stack- > top = - 1 ;
}
// Function to check if the stack is empty
bool isEmpty( Stack * stack) {
return stack- > top == - 1 ;
}
// Function to check if the stack is full
bool isFull( Stack * stack) {
return stack- > top >= MAX_SIZE - 1 ;
}
// Function to push an element onto the stack
void push( Stack * stack, int value) {
if ( isFull( stack) ) {
printf ( "Stack Overflow\n " ) ;
return ;
}
stack- > arr[ ++ stack- > top] = value;
printf ( "Pushed %d onto the stack\n " , value) ;
}
// Function to pop an element from the stack
int pop( Stack * stack) {
if ( isEmpty( stack) ) {
printf ( "Stack Underflow\n " ) ;
return - 1 ;
}
int popped = stack- > arr[ stack- > top] ;
stack- > top-- ;
printf ( "Popped %d from the stack\n " , popped) ;
return popped;
}
// Function to peek the top element of the stack
int peek( Stack * stack) {
if ( isEmpty( stack) ) {
printf ( "Stack is empty\n " ) ;
return - 1 ;
}
return stack- > arr[ stack- > top] ;
}
int main( ) {
Stack stack;
initialize( & stack) ;
push( & stack, 3 ) ;
printf ( "Top element: %d\n " , peek( & stack) ) ;
push( & stack, 5 ) ;
printf ( "Top element: %d\n " , peek( & stack) ) ;
push( & stack, 2 ) ;
printf ( "Top element: %d\n " , peek( & stack) ) ;
push( & stack, 8 ) ;
printf ( "Top element: %d\n " , peek( & stack) ) ;
while ( ! isEmpty( & stack) ) {
printf ( "Top element: %d\n " , peek( & stack) ) ;
printf ( "Popped element: %d\n " , pop( & stack) ) ;
}
return 0 ;
}
Ly8gQyBQcm9ncmFtIHRvIGRlbW9uc3RyYXRlIGhvdyB0byBJbXBsZW1lbnQgYSBTdGFjawojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KCi8vIERlZmluZSB0aGUgbWF4aW1pbSBjYXBhY2l0eSBvZiB0aGUgc3RhY2sKI2RlZmluZSBNQVhfU0laRSAxMDAKCi8vIERlZmluZSBhIHN0cnVjdHVyZSBmb3IgdGhlIHN0YWNrCnR5cGVkZWYgc3RydWN0IHsKICAgIGludCBhcnJbTUFYX1NJWkVdOyAgCiAgICBpbnQgdG9wOyAgICAgICAgCn0gU3RhY2s7CgovLyBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBzdGFjawp2b2lkIGluaXRpYWxpemUoU3RhY2sgKnN0YWNrKSB7CiAgICBzdGFjay0+dG9wID0gLTE7ICAKfQoKLy8gRnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIHN0YWNrIGlzIGVtcHR5CmJvb2wgaXNFbXB0eShTdGFjayAqc3RhY2spIHsKICAgIHJldHVybiBzdGFjay0+dG9wID09IC0xOyAgCn0KCi8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBzdGFjayBpcyBmdWxsCmJvb2wgaXNGdWxsKFN0YWNrICpzdGFjaykgewogICAgcmV0dXJuIHN0YWNrLT50b3AgPj0gTUFYX1NJWkUgLSAxOyAgCn0KCi8vIEZ1bmN0aW9uIHRvIHB1c2ggYW4gZWxlbWVudCBvbnRvIHRoZSBzdGFjawp2b2lkIHB1c2goU3RhY2sgKnN0YWNrLCBpbnQgdmFsdWUpIHsKICAgIGlmIChpc0Z1bGwoc3RhY2spKSB7CiAgICAgICAgcHJpbnRmKCJTdGFjayBPdmVyZmxvd1xuIik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgc3RhY2stPmFyclsrK3N0YWNrLT50b3BdID0gdmFsdWU7CiAgICBwcmludGYoIlB1c2hlZCAlZCBvbnRvIHRoZSBzdGFja1xuIiwgdmFsdWUpOwp9CgovLyBGdW5jdGlvbiB0byBwb3AgYW4gZWxlbWVudCBmcm9tIHRoZSBzdGFjawppbnQgcG9wKFN0YWNrICpzdGFjaykgewogICAgaWYgKGlzRW1wdHkoc3RhY2spKSB7CiAgICAgICAgcHJpbnRmKCJTdGFjayBVbmRlcmZsb3dcbiIpOwogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICBpbnQgcG9wcGVkID0gc3RhY2stPmFycltzdGFjay0+dG9wXTsKICAgIHN0YWNrLT50b3AtLTsKICAgIHByaW50ZigiUG9wcGVkICVkIGZyb20gdGhlIHN0YWNrXG4iLCBwb3BwZWQpOwogICAgcmV0dXJuIHBvcHBlZDsKfQoKLy8gRnVuY3Rpb24gdG8gcGVlayB0aGUgdG9wIGVsZW1lbnQgb2YgdGhlIHN0YWNrCmludCBwZWVrKFN0YWNrICpzdGFjaykgewogICAgaWYgKGlzRW1wdHkoc3RhY2spKSB7CiAgICAgICAgcHJpbnRmKCJTdGFjayBpcyBlbXB0eVxuIik7CiAgICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgcmV0dXJuIHN0YWNrLT5hcnJbc3RhY2stPnRvcF07Cn0KCmludCBtYWluKCkgewogICAgU3RhY2sgc3RhY2s7CiAgICBpbml0aWFsaXplKCZzdGFjayk7ICAKCiAgICBwdXNoKCZzdGFjaywgMyk7CiAgICBwcmludGYoIlRvcCBlbGVtZW50OiAlZFxuIiwgcGVlaygmc3RhY2spKTsKCiAgICBwdXNoKCZzdGFjaywgNSk7CiAgICBwcmludGYoIlRvcCBlbGVtZW50OiAlZFxuIiwgcGVlaygmc3RhY2spKTsKCiAgICBwdXNoKCZzdGFjaywgMik7CiAgICBwcmludGYoIlRvcCBlbGVtZW50OiAlZFxuIiwgcGVlaygmc3RhY2spKTsKCiAgICBwdXNoKCZzdGFjaywgOCk7CiAgICBwcmludGYoIlRvcCBlbGVtZW50OiAlZFxuIiwgcGVlaygmc3RhY2spKTsKCiAgICB3aGlsZSAoIWlzRW1wdHkoJnN0YWNrKSkgewogICAgICAgIHByaW50ZigiVG9wIGVsZW1lbnQ6ICVkXG4iLCBwZWVrKCZzdGFjaykpOwogICAgICAgIHByaW50ZigiUG9wcGVkIGVsZW1lbnQ6ICVkXG4iLCBwb3AoJnN0YWNrKSk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=
stdin
MTAKYWJhCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtz
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks