#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
struct Stack {
int top;
unsigned int capacity;
int* array;
};
//function to create a stack , initialising with capacity as zero
struct Stack* createStack(unsigned int cap)
{
struct Stack* newStack = (struct Stack*) malloc(sizeof(struct Stack));
newStack->top = -1;
newStack->capacity = cap;
newStack->array = (int*)malloc(sizeof(int)* newStack->capacity);
return newStack;
}
int isFullStack(struct Stack* stack)
{
return stack->top == stack->capacity - 1;
}
int isEmptyStack(struct Stack* stack)
{
return stack->top == - 1;
}
void push(struct Stack* stack , int item )
{
if (isFullStack(stack) == 1)
{
printf("Stackoverflow");
return;
}
stack->array[++stack->top] = item;
printf("Pushed on stack %d \n ", item);
}
int pop(struct Stack* stack)
{
if (isEmptyStack(stack) == 1)
{
printf("Stack Underflow");
return INT_MIN;
}
printf("Popped %d\n", stack->array[stack->top]);
return stack->array[stack->top--] ;
}
void peek(struct Stack* stack)
{
if (isEmptyStack(stack))
{
printf("Empty stack \n");
return;
}
printf("%d\n" , stack->array[stack->top]);
;
}
int main()
{
struct Stack* stack = createStack(100);
push(stack , 1 );
push(stack, 2);
push(stack, 3);
pop(stack);
peek(stack);
pop(stack);
pop(stack);
peek(stack);
push(stack, 1);
peek(stack);
getchar();
return 0;
}
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
struct Stack {
int top;
unsigned int capacity;
int* array;
};
//function to create a stack , initialising with capacity as zero
struct Stack* createStack(unsigned int cap)
{
struct Stack* newStack = (struct Stack*) malloc(sizeof(struct Stack));
newStack->top = -1;
newStack->capacity = cap;
newStack->array = (int*)malloc(sizeof(int)* newStack->capacity);
return newStack;
}
int isFullStack(struct Stack* stack)
{
return stack->top == stack->capacity - 1;
}
int isEmptyStack(struct Stack* stack)
{
return stack->top == - 1;
}
void push(struct Stack* stack , int item )
{
if (isFullStack(stack) == 1)
{
printf("Stackoverflow");
return;
}
stack->array[++stack->top] = item;
printf("Pushed on stack %d \n ", item);
}
int pop(struct Stack* stack)
{
if (isEmptyStack(stack) == 1)
{
printf("Stack Underflow");
return INT_MIN;
}
printf("Popped %d\n", stack->array[stack->top]);
return stack->array[stack->top--] ;
}
void peek(struct Stack* stack)
{
if (isEmptyStack(stack))
{
printf("Empty stack \n");
return;
}
printf("%d\n" , stack->array[stack->top]);
;
}
int main()
{
struct Stack* stack = createStack(100);
push(stack , 1 );
push(stack, 2);
push(stack, 3);
pop(stack);
peek(stack);
pop(stack);
pop(stack);
peek(stack);
push(stack, 1);
peek(stack);
getchar();
return 0;
}
No comments:
Post a Comment