diff --git a/data-structures/Queue.cpp b/data-structures/Queue.cpp new file mode 100644 index 00000000..1a67df4c --- /dev/null +++ b/data-structures/Queue.cpp @@ -0,0 +1,61 @@ +#include +#define qsize 5 +struct queue +{ + int arr[qsize]; + int f,r; +}; +typedef struct queue Queue; +void enqueue(Queue *q, int x) +{ + if(q->r==qsize-1) + printf("QUEUE OVERFLOW\n"); + else + q->arr[++q->r]=x; +} +int dequeue(Queue *q) +{ + if(q->f-q->r==1) + printf("Queue Underflow"); + else + return(q->arr[q->f++]); +} +int main() +{ + Queue q; + q.f=0; + q.r=-1; + while(1) + { + printf("Enter 1 to Enqueue\nEnter 2 to Dequeue\nEnter 3 to Display All Elements\nEnter 0 to Exit\n"); + int c; + scanf("%d",&c); + switch(c) + { + case 0: printf("Ended\n"); return 0; + case 1: printf("Enter Element to Enqueue\n"); + int x; + scanf("%d",&x); + enqueue(&q,x); + break; + case 2: if(q.f-q.r==1) + printf("Queue Undeflow\n"); + else + printf("Dequeued Element is %d\n",dequeue(&q)); + break; + case 3: printf("Elements of Queue Are\n"); + if(q.f-q.r==1) + { + printf("Queue is Empty\n"); + break; + } + int i; + for(i=q.f;i<=q.r;i++) + printf("%d ",q.arr[i]); + printf("\n"); + break; + default: printf("Wrong Choice\n"); + } + } + return 0; +} diff --git a/data-structures/Stack.cpp b/data-structures/Stack.cpp new file mode 100644 index 00000000..b3a488cb --- /dev/null +++ b/data-structures/Stack.cpp @@ -0,0 +1,68 @@ +#include +#define max 50 +struct stack +{ + int ch[max]; + int top; +}; +typedef struct stack Stack; +void push(Stack *s, int x) +{ + if(s->top==max-1) + printf("ERROR: Stack Overflow\n"); + else + s->ch[++s->top]=x; +} +int pop(Stack *s) +{ + if(s->top==-1) + { + printf("ERROR: Stack Underflow\n"); + } + else + return (s->ch[s->top--]); +} +int main() +{ + printf("Stack Has Been Initiated...\n"); + Stack s; + s.top=-1; + int c; + while(1) + { + printf("\nEnter 1 to push an element\nEnter 2 to pop an element\nEnter 3 to display all the content of stack\nEnter 0 to exit\n"); + scanf("%d",&c); + switch(c) + { + case 0: return 0; + case 1: + { + printf("Enter element to be pushed\n"); + int x; + scanf("%d",&x); + push(&s,x); + printf("Element successfully pushed\n"); + break; + } + case 2: + { + printf("Poped Element Is %d\n",pop(&s)); + break; + } + case 3: + { + printf("Stack has the following content in order LIFO\n"); + int i; + for(i=s.top;i>=0;i--) + { + printf("%d ",s.ch[i]); + } + break; + } + default: + { + printf("Wrong Choice\n"); + } + } + } +}